【发布时间】:2015-10-31 13:50:07
【问题描述】:
我无法在 IIS8.5 中显示任何自定义错误页面!
当我在 Visual Studio 中本地运行我的 MVC 5 应用程序时,会显示自定义错误页面。但是当我在我的网络服务器上部署到 IIS 并导航到带有“错误 URL”的站点子页面时,我的自定义 404 页面应该会显示出来,但会显示默认的通用 404 页面。
这是我所做的:
web.config
customError 部分已被删除。
添加了以下部分
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
<error statusCode="500" responseMode="ExecuteURL" path="/Error/ServerError" />
</httpErrors>
</system.webServer>
控制器
namespace MyApp.Controllers
{
[Authorize(Roles = "MyRole")]
public class ErrorController : Controller
{
[AllowAnonymous]
public ActionResult NotFound()
{
Response.StatusCode = 404;
return View();
}
[AllowAnonymous]
public ActionResult ServerError()
{
Response.StatusCode = 500;
return View();
}
}
}
观看次数
非常简单直接(此处不包括)。
IIS
已验证 IIS 错误页面功能与我的配置中的相同。每个错误状态代码的页面。功能和页面设置为“自定义”。
已安装检查的 Windows 功能\Web 服务器 (IIS)\Web 服务器\常见 HTTP 功能\HTTP 错误。
开发者工具
导航到拼写错误的子页面显示我收到 404 客户端错误。
帮助
我尝试了很多东西!我错过了什么吗? IIS 环境问题,即某处的设置?
自定义错误在我的 IDE 中有效,但在 IIS 中无效。我已经花了一天多的时间!阅读关于 SO 的许多页面、文章和类似问题。
【问题讨论】:
-
问题标题声明“在本地工作”,我的意思是它在 Visual Studio IDE 中工作,而不是在同一个 IIS 框上浏览。很抱歉有任何混淆。
-
当您手动导航到某个错误操作(例如 /Error/NotFound)时会看到什么?
-
@TiesonT。对于 Edge,我收到“HTTP 404 错误,这很奇怪...... Microsoft Edge 找不到此页面”消息。对于 FF 和 Chrome,我只会得到空白页。 (不知道为什么 FF 和 Chrome 不显示他们的通用浏览器 404 错误页面。)
-
如果在NotFound的action方法中设置断点,是否到达?
-
@TiesonT.Yep 进入 NotFound() 操作方法,Response.StatusCode 为 200,我将其设置为 404,这一切都在 VS IDE 中完美运行,即正在显示自定义错误页面.但在 IIS 中并非如此,这就是为什么我倾向于网络服务器上的环境问题。
标签: asp.net-mvc iis