![](/img/trans.png)
[英]asp.net core 2 optional attribute routing parameter with + in it results in 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.