gpt4 book ai didi

c# - 为什么发生异常时不从 Mvc 设置 StatusCode

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:14 25 4
gpt4 key购买 nike

在一个简单的应用程序中:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.Use(async (context, next) =>
{
try
{
await next();
}
finally
{
var test = context.Response.StatusCode;
//test=200 when exception is thrown from Mvc()
}
});
app.UseMvc();
}

如果 Controller 抛出 Exception,为什么 Response.StatusCode 没有设置?这似乎非常令人惊讶且没有记录。它似乎与管道的概念不一致,例如。 401404到此已经设置好了。这是错误还是设计使然?

最佳答案

错误处理不是 MVC 中间件的职责/关注点。异常只会冒泡,其他中间件(例如开发人员异常页面或异常处理程序)应处理此错误。

您可以通过在 UseMvc() 调用之前添加 UseDeveloperExceptionPage()UseExceptionHandler() 来尝试.例如:

public void Configure(IApplicationBuilder app)
{
app.UseExceptionHandler("/path/to/error/page");
app.UseMvc();
}

关于c# - 为什么发生异常时不从 Mvc 设置 StatusCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50405282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com