【问题标题】:How can I route 401 and 403 errors?如何路由 401 和 403 错误?
【发布时间】:2018-12-02 06:22:59
【问题描述】:

我的创业公司有这个:

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 应用程序。

【问题讨论】:

标签: c# asp.net-core


【解决方案1】:

配置状态代码页 默认情况下,应用不为 HTTP 状态代码提供丰富的状态代码页面,例如 404 Not Found。要提供状态代码页,请使用状态代码页中间件。

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

在 Startup.Configure 方法中添加一行:

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这里是相关文档

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2018-12-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多