1

我们正在将一些经典 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 页面,但 500 错误会像在 IIS6 中一样输出到浏览器,或者有没有办法配置服务器来处理自定义 404 以及定制500?

提前致谢。

4

3 回答 3

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”自定义错误;)

于 2014-11-15T15:50:28.583 回答
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 错误,因此必须调用女巫页面。

于 2012-03-14T21:07:22.950 回答
0

查看此处发布的解决方案 - 如何在 ASP.NET MVC 中正确处理 404?

关键是—— Response.TrySkipIisCustomErrors = true;

于 2012-11-28T01:30:47.630 回答