我们正在将一些经典的ASP站点从IIS6机器迁移到运行IIS7的新的Server2008机器上。
我们已经经历了一个关于自定义错误的学习过程,现在可以正常工作了,Server.GetLastError现在也可以工作了。
我们正在迁移的网站使用一个定制的CMS,它使用一个自定义的404.asp错误页面来根据URL从数据库中拉出内容。这也很好用。
然而,当这两个页面组合在一起时(例如,我们在通过自定义404页面运行的页面上有一个500错误),我们会得到一个完全空白的页面。没有错误,没有信息,什么都没有。只是一个普通的白色页面。
示例1:自定义404页面中的http://snavebelac.com/thisdoesnotexist结果示例2:http://snavebelac.com/st-test空白页面。这在自定义404页面中有一个故意的500错误。
我假设,因为它是通过自定义404.asp错误页面运行的,所以这以某种方式阻止了自定义500错误页面的功能。
有没有人知道我如何配置服务器,使自定义404页面触发,但500个错误输出到浏览器,就像在IIS6中一样,或者有没有办法配置服务器来处理自定义404和自定义500?
提前谢谢。
发布于 2012-03-15 05:07:23
您必须配置您的web.config来处理500个状态错误,如下所示:
<system.web>
<customErrors mode="On" defaultRedirect="frmError.aspx">
<error statusCode="404" redirect="frmNotFound.aspx" />
<error statusCode="500" redirect="frmError.aspx" />
</customErrors>
</system.web>请注意第四行代码,您在其中说明必须调用witch页面,因为您收到了500错误。
发布于 2012-11-28 09:30:48
查看此处发布的解决方案- How can I properly handle 404 in ASP.NET MVC?
关键是- Response.TrySkipIisCustomErrors = true;
发布于 2014-11-15 23:50:29
我也遇到过类似的问题,解决方案真的很奇怪,但肯定能行得通。
我将非常务实,执行以下操作。
<httpErrors errorMode="Custom" defaultResponseMode="ExecuteURL" existingResponse="Auto">
<remove statusCode="500" subStatusCode="-1" />
<error statusCode="500" subStatusCode="100" prefixLanguageFilePath="" path="/500.100.asp" responseMode="ExecuteURL" />
<remove statusCode="404" subStatusCode="-1" />
<error statusCode="404" prefixLanguageFilePath="" path="/404.asp" responseMode="ExecuteURL" />
</httpErrors>如果您确保空白页以以下内容结尾,则空白页将为“非空白”:
Response.Flush()当IIS在/500.100.asp中执行代码时,它不会刷新响应,并且以一个空白页结束。我保证"404“和"500.100”自定义错误在IIS7.5/IIS8和Classic ASP中是可能的;)
https://stackoverflow.com/questions/9671977
复制相似问题