【问题标题】:.NET 5.0 MVC return Json is throwing a JSON Parser error.NET 5.0 MVC 返回 Json 抛出 JSON Parser 错误
【发布时间】:2020-12-01 13:59:59
【问题描述】:

我们有一个正在从 .NET Core 2.2 迁移到 .NET 5.0 的应用程序。除了一件事,一切都按预期工作。当我们遇到异常时,我们会捕获它并将其添加到将作为 JSON 返回的错误消息列表中。这是一个非常简化的示例:

public JsonResult TestingJson()
{
    Response response = new Response();

    try
    {
        throw new TimeoutException();
    }
    catch (Exception ex)
    {
        response.ErrorMessages.Add(new ErrorMessage {
            Exception = ex,
            Text = ex.Message,
            CreatedDate = DateTime.Now
        });
    }

    return Json(response);
}

返回 Json(response) 给了我:“SyntaxError:JSON 输入意外结束”。如果我在构建响应对象时不添加“Exception = ex”,那么一切正常。似乎它无法将异常转换为 JSON。我的问题是,在 Core 2.2 中一切正常。我在迁移过程中遗漏了什么吗?我知道这是一个模糊的问题,但我希望有人遇到过这样的事情并且可能知道我错过了什么。

谢谢

【问题讨论】:

    标签: json asp.net-core-mvc


    【解决方案1】:

    asp.net core 2.2 默认使用Newtonsoft.Json。作为改进 ASP.NET Core 共享框架工作的一部分,Newtonsoft.Json (Json.NET) 已从 ASP.NET Core 共享框架中移除asp.net core 3.0.

    为满足您的要求,您需要添加 NewtonSoft 支持:

    1.安装Microsoft.AspNetCore.Mvc.NewtonsoftJson包版本5.0.0。

    2.更新 Startup.ConfigureServices 以调用AddNewtonsoftJson

    services.AddControllers()
        .AddNewtonsoftJson();
    

    参考:

    https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-5.0&tabs=visual-studio#use-newtonsoftjson-in-an-aspnet-core-30-mvc-project

    【讨论】:

    • 这就是我所缺少的。感谢 Rena 的帮助!
    猜你喜欢
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 2021-02-27
    • 2011-05-03
    • 1970-01-01
    相关资源
    最近更新 更多