【发布时间】:2020-08-09 01:16:52
【问题描述】:
我有一个 ASP.NET Core 3.1 MVC 应用程序(不是 Razor Pages 项目),我正在尝试通过 app.UseExceptionHandle("/error") 使用 exception handling middleware 来处理异常。
似乎我可以创建自己的 MVC 错误控制器来执行此操作,但我看到了一些建议,您实际上可以在 MVC 应用程序中使用 Razor Pages。这对于像错误处理页面这样的东西可能更简单,因为它可能是一个简单的向用户显示(可能包括请求 ID),做一些日志记录,并且不需要整个控制器。在the Microsoft example 中看起来他们也在使用 Razor Pages,但那是因为他们的示例是 Razor Pages 项目。在我的 MVC 项目中,我尝试向我的 MVC 应用程序添加一个Pages 目录,并添加一个包含一些非常简单的内容的错误页面,但中间件找不到它。
~/Pages/Error.cshtml
@page
<h2>Sorry...</h2>
我不确定我是否应该在此处包含 Error.cshtml.cs 文件,因为它不是 Razor Pages 项目...我尝试将中间件路径更改为我的一个 MVC 控制器并且它起作用了:
app.UseExceptionHandler("/app/about");
...所以我认为我在路由到 Razor 页面时搞砸了一些事情,因为它针对 MVC 控制器操作路由进行了适当的重定向。
- 我应该能够将 Razor 页面添加到标准 MVC 项目中吗?
- 这是一种常见的做法,甚至是一个好主意,我应该只创建一个错误控制器吗?
- 有什么方法可以防止我的用户直接导航到 MVC 错误控制器路由(即 /Error)?
【问题讨论】:
标签: asp.net-core exception middleware