我最近移动了主机,不得不在IIS中再次设置客户错误.
我可以按如下方式转到IIS Admin和Error Pages:

然后我可以转到自定义错误,并设置如下选项:

这将创建我的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>
Run Code Online (Sandbox Code Playgroud)
当我测试页面时,505错误工作正常,并重定向到右页,但404不重定向并返回标准IIS 404错误.我已确认服务器上的404错误页面位于正确的位置.
我看不出还有什么需要做的.
453*_*066 13
得到它最终工作(帮助找到这个: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>
Run Code Online (Sandbox Code Playgroud)
我遇到类似的问题,即在/ Error / Missing处有一个自定义404页面,但没有显示不存在的静态文件或DID存在的文件夹/目录(但MVC不应该提供该页面) )。缺少页面控制器具有以下内容:
Response.AddHeader("Content-Type","text/html; charset=utf-8");
Response.TrySkipIisCustomErrors = true;
Response.StatusCode = (int)HttpStatusCode.NotFound; // 404
Run Code Online (Sandbox Code Playgroud)
另外,如果我在控制器中返回了以下内容,则无法获得自定义错误页面:
return HttpNotFound();
Run Code Online (Sandbox Code Playgroud)
如果设置PassThrough,可以将IIS默认错误更改为空白页:
<httpErrors existingResponse="PassThrough" />
Run Code Online (Sandbox Code Playgroud)
将其更改为“替换”使默认IIS错误再次显示。
我在web.config中也有一节,但是由于是IIS 8.5,所以我已经删除了它,看起来不再需要它了。
<system.web>
<customErrors mode="Off">
</system.web>
Run Code Online (Sandbox Code Playgroud)
因此,基本上我无法摆脱默认的IIS消息-单行或更详细的消息。我的httpErrors部分如下所示:
<httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL">
<remove statusCode="404" />
<error statusCode="404" path="/Error/Missing" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
最终,我遇到了这个问题,我在寻找关于这个问题的另一个答案,意识到我可以在每个错误行上尝试使用ResponseMode。我以为那是没有必要的,因为我设置了defaultResponseMode-但这有所作为!
因此,如果您想提供自定义404页面,请使用以下httpErrors模块:
<httpErrors errorMode="Custom">
<remove statusCode="404" />
<error statusCode="404" path="/Error/Missing" responseMode="ExecuteURL" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)
我已经将所有这些详细信息放在这里,因此希望其他人在搜索与我所做的相同的事情时会看到它-希望对您有所帮助!
| 归档时间: |
|
| 查看次数: |
20637 次 |
| 最近记录: |