在我的Asp.Net MVC网站上,我试图让自定义错误页面正常工作。在开发机器中,一切正常。但是当我将网站发布到制作时,它只有在我将状态代码设置为200(或者不设置它)时才有效。这是我的web.config
:
<customErrors mode="On" defaultRedirect="~/Error" redirectMode="ResponseRedirect">
<error redirect="~/Error/NotFound" statusCode="404" />
</customErrors>
这是ErrorController
public class ErrorController : Controller
{
public ViewResult Index()
{
return View("Error");
}
public ViewResult NotFound(string aspxerrorpath)
{
Response.StatusCode = 404; //if I comment out this line, it works
return View("NotFound");
}
}
如果我注释掉代码Response.StatusCode = 404;
,则会显示错误页面。否则,它会显示网站上的默认404页面。同样,这适用于我的开发机器。我错过了什么吗?如何呈现自定义错误页面并同时返回404代码?
答案 0 :(得分:1)
我遇到了同样的问题,但如果您使用的是IIS 7或更高版本,则可以在web.config中使用httpErrors。:
<system.webServer>
<httpErrors errorMode="Custom">
<remove statusCode="404"/>
<error statusCode="404" path="~/Error/NotFound" responseMode="ExecuteURL"/>
</httpErrors>
</system.webServer>
在这里阅读更多相关信息: What is the difference between customErrors and httpErrors?