如何解决401和403错误?

时间:2018-12-01 11:12:15

标签: c# asp.net-core

我的启动中有这个

app.UseMvc(routes =>
{
routes.MapRoute(
    "404-PageNotFound",
    "{*url}",
    new { controller = "Home", action = "Error" }
    );
});

它按预期将404错误重定向到“错误”页面。如何解决401和/或403错误?我已经尝试过了:

app.UseMvc(routes =>
{
    routes.MapRoute(
        "401",
        "{*url}",
        new { controller = "Home", action = "Error" }
        );
});

我今天花了几个小时在谷歌上搜索,却一无所获。其他一些答案则涉及创建这样的处理程序:Override AuthorizeAttribute in ASP.Net Core and respond Json status。但是,我认为这对我来说太过分了。

如何处理401或403错误?

如果有什么不同;它是返回401/403错误的Web API .NET Core 2.1,以及处理该错误的MVC Core MVC 2.1应用。

1 个答案:

答案 0 :(得分:2)

配置状态代码页 默认情况下,应用程序不为HTTP状态代码(例如404未找到)提供丰富的状态代码页。要提供状态代码页,请使用状态代码页中间件。

Microsoft.AspNetCore.Diagnostics软件包提供了中间件,该软件包在Microsoft.AspNetCore.App元软件包中提供。

向Startup.Configure方法添加一行:

Image

app.UseStatusCodePages(async context =>
{
    context.HttpContext.Response.ContentType = "text/plain";

    await context.HttpContext.Response.WriteAsync(
        "Status code page, status code: " + 
        context.HttpContext.Response.StatusCode);
});

Link在此处了解相关文档