.NET Core WebAPI - 带有属性路由的 404 回退
Posted
技术标签:
【中文标题】.NET Core WebAPI - 带有属性路由的 404 回退【英文标题】:.NET Core WebAPI - 404 fallback with attribute routing 【发布时间】: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()
方法?如果没有,是否有有用的中间件替代品?
问候
【问题讨论】:
【参考方案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的更广泛详细信息的参考
【讨论】:
以上是关于.NET Core WebAPI - 带有属性路由的 404 回退的主要内容,如果未能解决你的问题,请参考以下文章
.NET core 2.1 Web API 是不是支持基于约定的路由?
使用 JWT 令牌的 ASP.NET Core 网站到 WebApi 身份验证
带有 ASP.NET Core WebAPI 的 Dart 中的令牌刷新并发问题
带有 JWT Bearer 令牌和 ASP.NET Core 2 WebApi 的 Azure AD 用户信息