【问题标题】:How to setup app.UseExceptionHandler with "razor page" Error.cshtml?如何使用“剃须刀页面”Error.cshtml 设置 app.UseExceptionHandler?
【发布时间】:2019-03-13 14:49:09
【问题描述】:

我尝试用我自己创建的 Error2.cshtml 剃须刀页面替换默认 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?
        {
           //...
        }
     }
 }

【问题讨论】:

  • app.UseExceptionHandler("/Error2"); 它应该像在共享文件夹中一样工作。 OnGet 可以在需要调用任何功能后调用 return Page();
  • 谢谢!不幸的是,这个建议对我没有帮助
  • 我也尝试将其移动到父视图文件夹 - 没有帮助。
  • 我很好奇,为什么你把它放在视图文件夹而不是页面中?它不是剃须刀页面应用吗?

标签: asp.net-core asp.net-core-mvc asp.net-core-2.1 razor-pages


【解决方案1】:

参考Handle errors in ASP.NET Core: Configure a custom exception handling page

配置应用程序未在开发环境中运行时使用的异常处理程序页面:

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

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

在 Razor 页面应用中,dotnet new Razor 页面模板在Pages 文件夹中提供了一个Error 页面和一个错误PageModel 类。

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

app.UseExceptionHandler("/error2");

应该放在Pages/Error2.cshtml

更新其PageModel

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-11-11
  • 2020-04-15
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 2020-04-26
  • 2021-03-01
相关资源
最近更新 更多