.NET Core 2.1 升級 .NET Core 3.1 踩坑(三)

目錄

問題描述

發生錯誤

解決方法


問題描述

.net Core 2.1 WebAPI 方法運行正常,代碼如下:

 [HttpPost("FindLoginSightSystemConfig")]
        public IActionResult FindLoginSightSystemConfig()
        {
            string jsonObj = "{\"msg\":null,\"errorCode\":null,\"detailMsg\":null,\"success\":true,\"data\":[{\"id\":\"402880e67100d47e017100d7408e0001\",\"configType\":\"loginTitleName\",\"configName\":\"loginTitleName\",\"configValue\":\"華虹(無錫)集成電路研發與生產基地\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-04-02 22:56:12\"},{\"id\":\"402880e67100d47e017100d749c20002\",\"configType\":\"loginSecondTitleName\",\"configName\":\"loginSecondTitleName\",\"configValue\":\"三維可視化運維管理平臺\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-04-02 22:56:23\"},{\"id\":\"402880e67100d47e017100dc3db50003\",\"configType\":\"projectName\",\"configName\":\"projectName\",\"configValue\":\"11211\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-03-23 10:16:08\"},{\"id\":\"402880e67100d47e017100e0d1cd0004\",\"configType\":\"projectArea\",\"configName\":\"projectArea\",\"configValue\":\"3333222\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-03-23 10:16:09\"},{\"id\":\"402880e67100d47e017100e0e3fa0006\",\"configType\":\"projectDetail\",\"configName\":\"projectDetail\",\"configValue\":\"3323\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-03-23 10:16:10\"},{\"id\":\"402880e67100d47e017100e0e8640007\",\"configType\":\"projectDescription\",\"configName\":\"projectDescription\",\"configValue\":\"422322\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-03-23 10:16:10\"},{\"id\":\"402880e67100d47e01710166c18f7c3a\",\"configType\":\"projectProvince\",\"configName\":\"projectProvince\",\"configValue\":\"110000\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-03-22 17:20:00\"},{\"id\":\"402880e67100d47e01710166c1f77c3b\",\"configType\":\"projectCity\",\"configName\":\"projectCity\",\"configValue\":\"110101\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-04-02 22:55:48\"},{\"id\":\"402880e67100d47e0171018ad04c61e0\",\"configType\":\"projectIndustry\",\"configName\":\"projectIndustry\",\"configValue\":\"METRO\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-04-02 22:55:48\"},{\"id\":\"402880e67100d47e0171018ad52361e1\",\"configType\":\"projectType\",\"configName\":\"projectType\",\"configValue\":\"EMC\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-03-23 10:16:06\"},{\"id\":\"402880e67100d47e0171018b021f61e2\",\"configType\":\"loginTitleSize\",\"configName\":\"loginTitleSize\",\"configValue\":\"28\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-04-02 22:55:48\"},{\"id\":\"402880e67100d47e0171018b08d961e3\",\"configType\":\"loginSecondTitleSize\",\"configName\":\"loginSecondTitleSize\",\"configValue\":\"24\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-04-02 22:55:48\"},{\"id\":\"402880e67100d47e017101931ad161e4\",\"configType\":\"loginTitleColor\",\"configName\":\"loginTitleColor\",\"configValue\":\"white\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-03-23 12:22:24\"},{\"id\":\"402880e67100d47e01710193248361e5\",\"configType\":\"loginSecondTitleColor\",\"configName\":\"loginSecondTitleColor\",\"configValue\":\"white\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-03-23 12:22:26\"},{\"id\":\"402880e67101ec5e017101fec509000a\",\"configType\":\"loginImgId\",\"configName\":\"loginImgId\",\"configValue\":\"2c9080e67135280401713b63249a0067@@@華虹@@@/4c9256ad5af0e8a5015af8f13eb3000c/login/317076b6831c403d9f1b337d05c4f7df.png\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-04-02 22:54:59\"},{\"id\":\"402880e67101ec5e01710209ed8665ae\",\"configType\":\"loginStyle\",\"configName\":\"loginStyle\",\"configValue\":\"standard\",\"description\":\"\",\"orgId\":\"40288594670ba1e701670ba33fe40000\",\"siteId\":\"4c9256ad5af0e8a5015af8f13eb3000c\",\"dbModifyTime\":\"2020-03-23 12:21:53\"}]}";
            return Ok(JsonConvert.DeserializeObject<dynamic>(jsonObj));
        }

發生錯誤

.net Core 3.1 WebAPI 運行後出現如下錯誤:

 Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
      An unhandled exception has occurred while executing the request.
System.NotSupportedException: The collection type 'Newtonsoft.Json.Linq.JObject' is not supported.
   at System.Text.Json.JsonPropertyInfoNotNullable`4.GetDictionaryKeyAndValueFromGenericDictionary(WriteStackFrame& writeStackFrame, String& key, Object& value)
   at System.Text.Json.JsonPropertyInfo.GetDictionaryKeyAndValue(WriteStackFrame& writeStackFrame, String& key, Object& value)
   at System.Text.Json.JsonSerializer.HandleDictionary(JsonClassInfo elementClassInfo, JsonSerializerOptions options, Utf8JsonWriter writer, WriteStack& state)
   at System.Text.Json.JsonSerializer.Write(Utf8JsonWriter writer, Int32 originalWriterDepth, Int32 flushThreshold, JsonSerializerOptions options, WriteStack& state)
   at System.Text.Json.JsonSerializer.WriteAsyncCore(Stream utf8Json, Object value, Type inputType, JsonSerializerOptions options, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding)
   at Microsoft.AspNetCore.Mvc.Formatters.SystemTextJsonOutputFormatter.WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeResultAsync>g__Logged|21_0(ResourceInvoker invoker, IActionResult result)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResultFilterAsync>g__Awaited|29_0[TFilter,TFilterAsync](ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResultExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.ResultNext[TFilter,TFilterAsync](State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeResultFilters()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 3163.8865ms 500 text/plain

解決方法

代碼如下:

1.在 Nuget 包管理器中搜索“Microsoft.AspNetCore.Mvc.NewtonsoftJson”然後添加即可;

2.在 Startup 類的 ConfigureServices 方法中增加一段代碼即可如下:

public void ConfigureServices(IServiceCollection services)
    {    
        services.AddMvc(options => options.EnableEndpointRouting = false)
                .SetCompatibilityVersion(CompatibilityVersion.Latest)


                .AddNewtonsoftJson(); //一定要加上,否則默認使用 System.Text.Json將會出問題。
    }

說明:重點 //services.AddMvc(options).AddNewtonsoftJson()。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章