经典ASP IIS7自定义404处理程序

时间:2014-04-07 14:31:42

标签: iis iis-7 asp-classic

结束了这个问题。

我正在一个繁忙的网站上工作,我们已经从IIS6迁移到IIS7,它使用自定义的404.asp处理程序来处理SEO友好的URL并从包含的asp脚本返回正确的内容。

我们设法让404方法在IIS7上运行,但是如果代码中的某个地方有错误,我们设置iis运行500.asp,用于记录错误并返回一条有用的消息给用户。

所以流程应该是:

用户类型友好网址:例如http://www.sitename.com/testarticle/ 哪个不存在并触发404.asp 404查找" testarticle"在我们的数据库中并返回正确的内容。 这一切都有效..

如果错误应调用500.asp   - 记录日志中的错误(Works)   - 将Msg返回到屏幕(不工作 - 只是获取空白页面)

这在IIS6中有效,但在IIS7中,500.asp会在我们的日志中记录错误,但绝对没有任何内容写入屏幕 - 我们只是得到一个空白屏幕。非常沮丧。

我们已尝试更改IIS和web.config中的每个设置,但我们无法使其正常工作。

任何帮助非常感谢.. 干杯

2 个答案:

答案 0 :(得分:2)

我之前做过类似的迁移,这是我最终得到的web.config设置(只是相关部分):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <httpErrors errorMode="DetailedLocalOnly">
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" subStatusCode="-1" prefixLanguageFilePath="" path="/common/404.asp" responseMode="ExecuteURL" />
            <remove statusCode="500" subStatusCode="100" />
            <error statusCode="500" subStatusCode="100" prefixLanguageFilePath="" path="/common/500.asp" responseMode="ExecuteURL" />
        </httpErrors>
    </system.webServer>
</configuration>

请注意使用的web.config部分。使用customErrors元素完成后,它对我不起作用。这是我使用自定义404错误页面进行URL重写以及在Classic ASP中使用自定义500错误的唯一方法。希望这能帮到你。

答案 1 :(得分: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”自定义错误;)