【发布时间】:2011-10-02 15:27:24
【问题描述】:
使用集成的 .net 4.0 应用程序池创建了一个新的 IIS7 网站。
以 .aspx 结尾的 URL 会显示自定义 404 其他任何内容都会显示蓝色服务器错误页面 “HTTP 错误 404.0 - 未找到 您要查找的资源已被删除、名称已更改或暂时不可用。” (所以与 IE 无关)
<customErrors redirectMode="ResponseRewrite" mode="On" defaultRedirect="/pages/404.aspx" />
</system.web>
<system.webServer>
<httpErrors >
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/pages/404.aspx" responseMode="ExecuteURL" />
</httpErrors>
</system.webServer>
也试过了
<httpErrors existingResponse="PassThrough" />
但这只会导致空响应。
我只找到一个关于执行 appcmd 以测试自定义 http 错误处理的有用性的参考,但这里是结果。
C:\Windows\System32\inetsrv>appcmd list config "http://mysite/file.notexist" -section:httpErrors
<system.webServer>
<httpErrors>
<error statusCode="401" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="401.htm" />
<error statusCode="403" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="403.htm" />
<error statusCode="404" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="404.htm" />
<error statusCode="405" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="405.htm" />
<error statusCode="406" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="406.htm" />
<error statusCode="412" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="412.htm" />
<error statusCode="500" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="500.htm" />
<error statusCode="501" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="501.htm" />
<error statusCode="502" prefixLanguageFilePath="%SystemDrive%\inetpub\custer
r" path="502.htm" />
</httpErrors>
</system.webServer>
这很奇怪,因为在 iis7 管理器中会显示错误页面
404 /pages/404.aspx Execute URL Local
.Net 错误页面没有显示任何内容,尽管我确实有一个条目。
问题 1:对于一个全新的 asp .net 4 iis7 站点,我需要采取哪些步骤才能为每个 404 结果生成一个自定义 .net 错误页面?
问题 2:为什么 .net 处理程序只适用于 .aspx 文件而不适用于其他文件?
注意:在服务器级别设置 404,然后 appcmd 命令在路径中显示自定义 404,但对站点无法显示 404 没有影响。
所以我猜这是一条红鲱鱼。
【问题讨论】:
标签: .net iis-7 http-status-code-404