如何设置 app.UseExceptionHandler 和 "razor page" Error.cshtml?

How to setup app.UseExceptionHandler with "razor page" Error.cshtml?

我尝试用我自己创建的 Error2.cshtml razor 页面 替换默认的 MVC 错误页面 Error.cshtml,但这不起作用:错误 404.

我应该在路由中额外配置什么才能使其正常工作?

Startup.cs

app.UseExceptionHandler("/Home/Error2"); // new razor page is located in standard /Views/Shared folder

Error2Model

namespace MyApp.Views.Shared
{
    public class Error2Model : PageModel
    {
        public IActionResult OnGet() // this looks  unreliable but what to use instead?
        {
           //...
        }
     }
 }

引用Handle errors in ASP.NET Core: Configure a custom exception handling page

Configure an exception handler page to use when the app isn't running in the Development environment:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    env.EnvironmentName = EnvironmentName.Production;

    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/error");
    }

In a Razor Pages app, the dotnet new Razor Pages template provides an Error page and an error PageModel class in the Pages folder.

在您的情况下,您可以将其设置为

app.UseExceptionHandler("/error2");

应该放在Pages/Error2.cshtml

更新其 PageModel

namespace MyApp.Pages {
    public class Error2Model : PageModel {
        public IActionResult OnGet() {
           //...
            return Page();
        }
     }
 }