为什么在发生异常时未从 Mvc 设置 StatusCode

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


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();

}

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



眼眸繁星
浏览 116回答 2
2回答

达令说

错误处理不是 MVC 中间件的责任/关注点。异常只会冒泡,其他中间件(例如开发人员异常页面或异常处理程序)应该处理此错误。您可以通过添加试试这个UseDeveloperExceptionPage()或UseExceptionHandler() 以前的UseMvc()呼叫。例如:public void Configure(IApplicationBuilder app){    app.UseExceptionHandler("/path/to/error/page");    app.UseMvc();}
打开App,查看更多内容
随时随地看视频慕课网APP