之前基于 ASP.NET Core 2.2 的代码如下
public static IApplicationBuilder UseCustomErrorPages(this IApplicationBuilder app)
{
var options = new ExceptionHandlerOptions
{
ExceptionHandlingPath = "/errors/500",
ExceptionHandler = app.New().UseMvcWithDefaultRoute().Build()
};
app.UseExceptionHandler(options);
app.UseStatusCodePagesWithReExecute("/errors/{0}");
return app;
}
迁移到 ASP.NET Core 3.0 之后运行报错
Endpoint Routing does not support 'IApplicationBuilder.UseMvc(...)'. To use 'IApplicationBuilder.UseMvc' set 'MvcOptions.EnableEndpointRouting = false' inside 'ConfigureServices(...).
at Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvc(IApplicationBuilder app, Action`1 configureRoutes)
at Microsoft.AspNetCore.Builder.MvcApplicationBuilderExtensions.UseMvcWithDefaultRoute(IApplicationBuilder app)
请问如何解决?
将 UseMvcWithDefaultRoute() 改为 UseRouting() + UseEndpoints() 就可以了
public static IApplicationBuilder UseCustomErrorPages(this IApplicationBuilder app)
{
var options = new ExceptionHandlerOptions
{
ExceptionHandlingPath = "/errors/500",
ExceptionHandler = app.New()
.UseRouting()
.UseEndpoints(endpoints => endpoints.MapDefaultControllerRoute())
.Build()
};
app.UseExceptionHandler(options);
app.UseStatusCodePagesWithReExecute("/errors/{0}");
return app;
}