在IIS7中的自定义404错误页面中查找经典ASP错误

时间:2012-03-12 17:37:08

标签: iis-7 asp-classic custom-errors

我们正在将一些经典ASP网站从IIS6框迁移到运行IIS7的新Server 2008框。

我们已经完成了有关自定义错误的学习过程,现在这些工作正常,Server.GetLastError正在运行。

我们正在迁移的网站使用定制的CMS,该CMS利用自定义的404.asp错误页面从数据库中提取内容,具体取决于URL。这也是完美的。

但是,当2合并时(例如,我们在通过自定义404页面运行的页面上有500错误),我们会收到一个完全空白的页面。没有错误,没有任何信息。只是一个纯白页。

示例1:http://snavebelac.com/thisdoesnotexist会生成自定义404页面 示例2:http://snavebelac.com/st-test空白页。这在自定义404页面中有故意500错误。

我认为因为它正在运行自定义的404.asp错误页面,这会以某种方式阻止自定义500错误页面运行。

有没有人知道我怎么能够配置服务器以便自定义404页面触发但是在IIS6中输出500个错误或者是否有一种方法可以配置服务器以将自定义404处理为以及定制500?

提前致谢。

3 个答案:

答案 0 :(得分:0)

您必须配置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>

请注意第四行代码,其中您说自从您收到500错误后必须调用女巫页面。

答案 1 :(得分:0)

查看此处发布的解决方案 - How can I properly handle 404 in ASP.NET MVC?

关键是 - Response.TrySkipIisCustomErrors = true;

答案 2 :(得分:0)

我遇到了类似的问题,解决方案非常奇怪,但确实有效。

我会非常务实,请执行以下操作。

<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中的代码时,它不会刷新响应,而是以空白页结束。 我保证在IIS7.5 / IIS8和Classic ASP中可以实现“404”和“500.100”自定义错误;)