c# - 如何显示自定义 404 错误页面
问题描述
我创建了一个演示,用于在 MVC 5 中显示我们的自定义错误页面。我在输入两个斜杠时成功,但是当我输入两个以上的斜杠时,我没有得到我的自定义错误页面,而是如图所示的 MVC 错误以下。
HTTP 错误 404.0 - 未找到 您要查找的资源已被删除、名称已更改或暂时不可用。
这就是我的Web.config
文件的样子。
<customErrors mode="On" defaultRedirect="~/Error">
<error redirect="~/Error/NotFound" statusCode="404" />
<error redirect="~/Error/Forbidden" statusCode="403" />
</customErrors>
这是我的ErrorController
。
public ViewResult NotFound()
{
return View();
}
当我输入下面的 URL 时,我当前的设置工作正常。
但是当输入以下 URL 之一时,我的自定义错误页面不会显示。
http://localhost:14360/search/fdsfdf/sdsdsd/asdsadasd/dasdsad
http://localhost:14360/search/fdsfdf/dsads/fe
解决方案
默认/App_Start/RouteConfig.cs
有
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
所以你输入http://localhost:14360/search/fdsfdf
或http://localhost:14360/search/fdsfdf/1234
将得到httpStatusCode 200,但http://localhost:14360/search/fdsfdf/dsads/fe
未定义url,如果你需要自定义错误页面,asp.net将向浏览器返回404,尝试添加httpErrors
并customErrors
处理httpStatusCode 404
<system.webServer>
<httpErrors existingResponse="Auto" errorMode="Custom" defaultResponseMode="File">
<remove statusCode="404" subStatusCode="-1"/>
<error statusCode="404" path="/Error/404" responseMode="Redirect" />
</httpErrors>
</system.webServer>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="~/Error/Index">
<error redirect="~/Error/404" statusCode="404" />
</customErrors>
</system.web>
推荐阅读
- hadoop - 无法在 ubuntu 18.04 中启动 hadoop datanode hadoop 3.1.1
- selenium-ide - 如何在 Selinium Ide 中使用“运行”命令?
- javascript - 在单击画布的位置添加一个点
- c++ - 如何在 C++ 的输出中打印引号?
- android - ionic GeoLocation 检索地址?
- wpf - 除非检查注册表,否则如何更改 WPF 的版本?
- powershell - 新的本地用户/本地组路径?
- javascript - 无法导入和导出类
- eclipse - 尝试将 sonarlint 连接到 sonarqube 服务器时发生空指针异常
- swift - heightAnchor.constraint 不改变视图高度