要实现在ASP.NET Core 2.2中对每个其他控制器返回404错误,可以通过创建一个自定义中间件来实现。以下是一个示例代码:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
namespace YourNamespace
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 添加其他的服务配置
}
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
// 添加其他的中间件
app.Use(async (context, next) =>
{
await next();
// 如果没有匹配的路由,返回404错误
if (context.Response.StatusCode == 404 && !context.Response.HasStarted)
{
context.Response.Clear();
context.Response.StatusCode = 404;
await context.Response.WriteAsync("Page not found");
}
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
在上面的示例中,我们首先在Configure方法中添加了自定义的中间件。这个中间件会在路由匹配之后执行,如果没有匹配的路由,即控制器不存在,就会设置响应的状态码为404,并返回一个自定义的错误消息。
请确保在ConfigureServices方法中添加了所需的其他服务配置,并在UseEndpoints方法中使用了MapControllers来配置路由。