特别说明:如果 Issue 报告为问题且开发成员回复确认问题之后但三天内都不能得到反馈,则视为无效Issue。
2.12.9
采用自定义IUnifyResultProvider方式捕捉异常,Startup类Configure方法中设置返回 200 状态码列表时,如果设置null,接口会返回200,但同时会抛出异常,(MiniProfiler不会记录起来)。
[2021-07-12 13:57:45.013 ERR] An unhandled exception has occurred while executing the request.
{"EventId":{"Id":1,"Name":"UnhandledException"},"SourceContext":"Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware","RequestId":"80000052-0000-fd00-b63f-84710c7967bb","RequestPath":"/api/dev"}
System.InvalidOperationException: StatusCode cannot be set because the response has already started.
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.ThrowResponseAlreadyStartedException(String name)
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.set_StatusCode(Int32 value)
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.set_StatusCode(Int32 value)
at Microsoft.AspNetCore.Http.DefaultHttpResponse.set_StatusCode(Int32 value)
at Furion.UnifyResult.UnifyContext.SetResponseStatusCodes(HttpContext context, Int32 statusCode, UnifyResultStatusCodesOptions options)
at IMyBest.Lottery.Core.Extensions.MyUnifyResultProvider.OnResponseStatusCodes(HttpContext context, Int32 statusCode, UnifyResultStatusCodesOptions options) in D:\xxx\Extensions\MyUnifyResultProvider.cs:line 91
at Furion.UnifyResult.UnifyResultStatusCodesMiddleware.InvokeAsync(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
[2021-07-12 13:57:47.339 ERR] Connection ID "18230571293206380625", Request ID "80000052-0000-fd00-b63f-84710c7967bb": An unhandled exception was thrown by the application.
{"EventId":{"Id":2,"Name":"ApplicationError"},"SourceContext":"Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer","RequestId":"80000052-0000-fd00-b63f-84710c7967bb","RequestPath":"/api/dev"}
System.InvalidOperationException: StatusCode cannot be set because the response has already started.
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.ThrowResponseAlreadyStartedException(String name)
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.set_StatusCode(Int32 value)
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.Microsoft.AspNetCore.Http.Features.IHttpResponseFeature.set_StatusCode(Int32 value)
at Microsoft.AspNetCore.Http.DefaultHttpResponse.set_StatusCode(Int32 value)
at Furion.UnifyResult.UnifyContext.SetResponseStatusCodes(HttpContext context, Int32 statusCode, UnifyResultStatusCodesOptions options)
at IMyBest.Lottery.Core.Extensions.MyUnifyResultProvider.OnResponseStatusCodes(HttpContext context, Int32 statusCode, UnifyResultStatusCodesOptions options) in D:\xxx\Extensions\MyUnifyResultProvider.cs:line 91
at Furion.UnifyResult.UnifyResultStatusCodesMiddleware.InvokeAsync(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
at StackExchange.Profiling.MiniProfilerMiddleware.Invoke(HttpContext context) in C:\projects\dotnet\src\MiniProfiler.AspNetCore\MiniProfilerMiddleware.cs:line 103
at Furion.StartupFilter.<>c__DisplayClass0_1.<b__1>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT`1.ProcessRequestAsync()
// 添加规范化结果状态码,需要在这里注册
app.UseUnifyResultStatusCodes(options =>
{
options.Return200StatusCodes = null; // 设置null会报错:StatusCode cannot be set because the response has already started.
//options.Return200StatusCodes = new[] { 401, 403 }; // 配置返回 200 的状态码
});
默认:401,403,如果设置为 null,则标识所有状态码都返回 200,不抛出异常。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
登录 后才可以发表评论