我想在我的ASP Core 2.0 MVC应用程序中显示错误的自定义页面。但我只能对某些错误类型实现这一点。
默认情况下,404错误如下所示:
我相信在ASP Core 2.0应用程序中捕捉和自定义404(未找到)等错误的正确方法是使用app。在启动时使用Configure()中的StatusCodePages()中间件。反恐精英。我已经这样做了,或者更具体地说,我使用了这个应用程序。使用StatusCodePageSwithreexecute(),因为我想创建自己的错误页面。
app.UseStatusCodePagesWithReExecute("/Error/Index", "?statusCode={0}");
现在,当我浏览到一个不存在的资源时,我会看到我的自定义错误消息,因为代码成功地拦截了404错误:
好的,看来这是可行的。
然而,我尝试导航到
https://localhost:44300/Startup.cs
这给了我一个404.7错误,大概是因为不应该允许用户导航到此文件。但更重要的是,
这次我没有看到自定义错误页
.相反,我看到的页面看起来像是由服务器生成的。
我有几个与此相关的问题:
-
为什么会这样?当我使用应用程序时。UseStatusCodePages(),为什么中间件不能像404错误一样捕获404.7错误?
-
此错误是在哪里生成的?我感觉这是由IIS服务器设置生成的,因为错误本身说我应该在applicationhost中验证设置。配置或网络。配置。
但是(i)没有网络。在ASP Core 2.0应用程序中配置,因此我看不到这些设置可能来自何处,并且(ii)我相信ASP Core 2.0使用的是Kestral,而不是IIS,我在我的应用程序中也看不到任何Kestral设置。
-
我该怎么做才能用我自己定制的错误页面替换这个错误页面,就像我对404错误所做的一样?