2015-07-05 113 views
7

我最近移动了主机,并且必须在IIS中再次设置客户错误。自定义404错误页面不能在IIS 8.5上工作

我可以去IIS管理和错误页面如下:

Custom Errors on IIS

然后我可以去自定义错误,并且已经设置了选项如下:

Customer Errors setup

这创建我的web.config文件如下:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors errorMode="DetailedLocalOnly" defaultResponseMode="ExecuteURL"> 
      <remove statusCode="500" subStatusCode="100" /> 
      <remove statusCode="500" subStatusCode="-1" /> 
      <remove statusCode="404" subStatusCode="-1" /> 
      <error statusCode="404" prefixLanguageFilePath="" path="/error_404.asp" responseMode="ExecuteURL" /> 
      <error statusCode="500" prefixLanguageFilePath="" path="/error_500.asp" responseMode="ExecuteURL" /> 
      <error statusCode="500" subStatusCode="100" path="/error_500.asp" responseMode="ExecuteURL" /> 
     </httpErrors> 
    </system.webServer> 
</configuration> 

当我测试页面时,505错误工作正常,并重定向到正确的页面,但404不重定向并返回标准的IIS 404错误。我已确认404错误页面在服务器上的正确位置。

我看不到我还需要做什么。

+0

考虑发布解决方案作为答案并接受它。否则,将来可能会删除没有任何答案的问题。 –

+0

感谢您的建议 - 完成。 – 4532066

回答

6

得到它到底工作(通过寻找这有助于:http://forums.iis.net/t/1173965.aspx),使用:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL"> 
      <remove statusCode="500" subStatusCode="100" /> 
      <remove statusCode="500" subStatusCode="-1" /> 
      <remove statusCode="404" subStatusCode="-1" /> 
      <error statusCode="404" path="/error_404.asp" responseMode="ExecuteURL" /> 
      <error statusCode="500" prefixLanguageFilePath="" path="/error_500.asp" responseMode="ExecuteURL" /> 
      <error statusCode="500" subStatusCode="100" path="/error_500.asp" responseMode="ExecuteURL" /> 
     </httpErrors> 
    </system.webServer> 
</configuration> 
2

我有一个类似的问题,我在/错误/缺少有一个自定义404页,但那一点都不t显示不存在的静态文件或DID存在的文件夹/目录(但不应由MVC提供)。丢失的页面控制器有以下几点:

Response.AddHeader("Content-Type","text/html; charset=utf-8"); 
    Response.TrySkipIisCustomErrors = true; 
    Response.StatusCode = (int)HttpStatusCode.NotFound; // 404 

而且我没有得到我的自定义错误页,如果我回到控制器中的以下内容:

return HttpNotFound(); 

我可以改变IIS默认错误如果我设置了PassThrough,则为空白页面:

<httpErrors existingResponse="PassThrough" /> 

将其更改为“Replace”会使默认IIS错误再次显示。

我也在我的web.config中有一个部分,但我已经把它拿出来了,因为我是IIS 8.5,它看起来不再需要它了。

<system.web> 
    <customErrors mode="Off"> 
</system.web> 

所以基本上我无法摆脱默认的IIS消息 - 无论是单线还是更详细的。我httpErrors部分是这样的:

<httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL"> 
    <remove statusCode="404" /> 
    <error statusCode="404" path="/Error/Missing" /> 
</httpErrors> 

最后我碰到这个问题来了,我一直在寻找在这个问题上对方的回答,并意识到,我可以尝试每个错误线ResponseMode。我认为这不是必要的,因为我有defaultResponseMode设置 - 但它有所作为!

所以,如果你想成为一个自定义404页使用此httpErrors模块:

<httpErrors errorMode="Custom"> 
    <remove statusCode="404" /> 
    <error statusCode="404" path="/Error/Missing" responseMode="ExecuteURL" /> 
</httpErrors> 

我已经把所有这些细节这里,所以这个希望显示出来别人搜索我做同样的事情- 希望能帮助到你!