【问题标题】:.NET Core WebAPI - 404 fallback with attribute routing.NET Core WebAPI - 带有属性路由的 404 回退
【发布时间】:2021-01-26 10:21:34
【问题描述】:

.NET Core 3.1 中实现我的第一个 restful webapi 时,我正在尝试实现 404 错误的后备例程。我的 Startup.cs 实际看起来像这样:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    // ...
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // ...
    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapFallbackToController("EndpointNotFound", "Fallback");
    });
}

在此配置中,404 回退在实际路由到相应控制器之前生效。我在 api 控制器中使用属性路由。一般是否可以在属性路由中使用MapFallbackToController() 方法?如果没有,是否有有用的中间件替代品?

问候

【问题讨论】:

    标签: c# rest .net-core webapi


    【解决方案1】:

    一些选项可以实现这一点,您可以从这里开始并探索其他可能性(以下在 Startup.cs 的 Configure 方法中配置):

    选项 1 app.UseStatusCodePages(); 这将显示内置的默认页面。

    选项 2 app.UseStatusCodePagesWithRedirects("~/MyCustomController/{0}"); 占位符 {0} 将填充 HttpStatusCode 例如:404

    此方法常用于app:

    • 应该将客户端重定向到不同的端点,通常是在 > 不同的应用程序处理错误的情况下。对于 Web 应用程序,客户端的浏览器 地址栏反映了重定向的端点。
    • 不应保留原始状态代码并将其与初始重定向响应一起返回。

    选项 3 app.UseStatusCodePagesWithReExecute("~/MyCustomController/{0}"); 与选项 2 相同,但有所不同

    此方法常用于应用应:

    • 处理请求而不重定向到不同的端点。网页版 应用程序,客户端的浏览器地址栏反映了最初请求的>端点。
    • 保留原始状态代码并将其与响应一起返回。

    您可以将其用作处理错误Handle errors in ASP.NET Core的更广泛详细信息的参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      相关资源
      最近更新 更多