繁体   English   中英

.NET Core WebAPI - 带有属性路由的 404 回退

[英].NET Core WebAPI - 404 fallback with attribute routing

.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 回退在实际路由到相应 controller 之前生效。 我在 api 控制器中使用属性路由。 通常可以在属性路由中使用MapFallbackToController()方法吗? 如果没有,是否有一个有用的中间件替代它?

问候

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

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

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

该方法常用于应用程序:

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

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

当应用程序应该:

  • 处理请求而不重定向到不同的端点。 对于 web 应用程序,客户端的浏览器地址栏反映了最初请求的 >endpoint。
  • 保留并返回原始状态代码和响应。

您可以将其用作参考,以获取更广泛的错误处理细节处理 ASP.NET 内核中的错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM