重定向到 Home/Error 在 ASP.NET Core 2.0 MVC 中查看页面

Redirect to Home/Error View Page in ASP.NET Core 2.0 MVC

我正在尝试为我的 mvc 网页中某处发生错误时制作自定义错误视图页面。理想情况下,我希望在发生错误时显示来自任何控制器操作的视图。

我尝试了几种不同的方法,但其中 none 捕获了异常,并且在启动我的应用程序时出现了通常的错误页面(在故意输入错误以进行尝试之后。)

目前,我的主文件夹中只有一个 Razor 视图 "Error",并且像往常一样在 HomeController 中返回该视图

Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    ...
}

HomeController.cs

public IActionResult Error()
{
    return View();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Home/Error");
    }

    ...
}

看上面的配置。在这里,当您在 Visual Studio 上开发应用程序时,它 不会重定向到 /Home/Error,因为它是为其他环境(如生产环境)设置的。相反,它会显示异常详细信息页面,因为 app.UseDeveloperExceptionPage();

如果由于 ProductionDevelopment 环境中的任何错误而要重定向到 /Home/Error,请按如下方式配置:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
     app.UseExceptionHandler("/Home/Error");

}

然后在Error方法中:

public IActionResult Error()
{
    var pathFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();
    Exception exception = pathFeature?.Error; // Here will be the exception details.

    return View();
}