You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core Web API报CS0103错误jsonString不存在当前上下文如何解决

错误原因
  • 变量作用域限制:jsonString是FromMandateDtoToMandate方法内的局部变量,仅在该方法内部可访问,离开方法作用域后就会被销毁,其他方法无法直接读取。
  • 代码存在其他隐性编译错误:
    • FromMandateDtoToMandate方法内局部变量名和参数名均为mandate,变量重名会触发编译报错
    • FromMandateDtoToTransactionLog方法要求传入TransactionDto类型参数,你调用时传入的是Mandate类型对象,类型不匹配
    • Post方法末尾有两个连续return语句,第二个return transaction永远不会执行,且方法返回值类型为Task<Mandate>,也不支持返回TransactionLog类型对象
修复方案

推荐使用元组返回值的方式传递序列化后的JSON字符串,无额外线程安全风险,逻辑清晰:

1. 修改EntityMapper代码

public class EntityMapper
{
    // 返回元组同时输出Mandate实体和序列化后的JSON
    public (Mandate mandateEntity, string serializeJson) FromMandateDtoToMandate(MandateDto mandateDto)
    {
        var mandateEntity = new Mandate()
        {
            DueDate = mandateDto.DueDate,
            StartDate = mandateDto.StartDate,
            EndDate = mandateDto.EndDate,
            MandateId = mandateDto.MandateId
        };
        string jsonString = JsonSerializer.Serialize(mandateEntity);
        return (mandateEntity, jsonString);
    }

    // 调整参数直接接收JSON字符串生成TransactionLog
    public TransactionLog FromJsonToTransactionLog(string rawJson)
    {
        return new TransactionLog
        {
            RawData = rawJson
        };
    }
}

2. 修改MandateService的Post方法

public async Task<Mandate> Post(MandateDto mandateDto)
{
    var mapper = new EntityMapper();
    var (mandateEntity, mandateJson) = mapper.FromMandateDtoToMandate(mandateDto);
    var transaction = mapper.FromJsonToTransactionLog(mandateJson);

    try
    {
        await _unitOfWork.MandateRepository.Insert(mandateEntity);
        await _unitOfWork.TransactionRepository.Insert(transaction);
        await _unitOfWork.SaveChangesAsync();
    }
    catch (Exception e)
    {
        // 保留原始异常栈信息方便排查问题
        throw new Exception("数据保存失败", e);
    }

    return mandateEntity;
}
补充说明

如果要保留原有Mapper的方法结构,也可以将jsonString作为FromMandateDtoToTransactionLog的入参数直接传入,不需要调整返回值,本质逻辑和上述方案一致。

内容的提问来源于stack exchange,提问作者Olugbenga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:24:04