【发布时间】:2016-03-11 08:00:16
【问题描述】:
我已经在我的 ASP 中实现了自定义 404 页面。 NET MVC 5 应用程序,起初我在本地主机上对其进行了测试,它运行良好。但是当我将设置移至发布配置并尝试在生产中对其进行测试时,自定义 404 页面消失了,出现了默认的 mvc 错误页面。我做错了什么?
Web.config
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/Error/Index" />
</httpErrors>
</system.webServer>
控制器
public class ErrorController : BaseController
{
public ActionResult Index(string id)
{
ViewModel vm = new ViewModel();
Response.StatusCode = 404;
return View("~/Views/..../Index.cshtml", vm);
}
}
【问题讨论】:
-
您使用的是哪个版本的 IIS?
-
我运行的是 Windows Server 2012 R2,所以应该是 IIS 8.5
-
我正在研究这个东西,同时我找到了this链接,你可以试试这个吗?
-
我已经尝试过了,唯一有效的是从转换中删除 httpErrors 并将其保存在基本 web.cofing 文件中。我不知道为什么会这样,我已经将转换后的文件与基本 web.config 中具有 404 处理的版本进行了比较,它们是相同的。
-
您在本地主机上使用哪个 Web 服务器?卡西尼、IISExpress 还是 IIS?以及哪个版本?根据我的经验,IIS httpErrors
ExecuteURL模式无法通过 MVC 路由,导致您在服务器上得到结果。但也许你的本地主机上有一些特定的配置(模块执行顺序?)可以解决这个问题。如果你能认出它对我来说可能会很有趣。
标签: asp.net asp.net-mvc custom-error-pages