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

经典ASP IIS7自定义404处理程序,iis,iis-7,asp-classic,Iis,Iis 7,Asp Classic,最后,我们来解决这个问题 我在一个繁忙的网站上工作,我们已经从IIS6迁移到IIS7,它使用一个定制的404.asp处理程序来处理SEO友好的URL,并从包含的asp脚本返回正确的内容 我们已经设法让404方法在IIS7上工作,但是如果代码中的某个地方有错误,我们已经将iis设置为运行500.asp,它被设计为记录错误并向用户返回有用的消息 因此,流程应该是: 用户类型友好的URL:例如。 它不存在并激发404.asp 404在数据库中查找“testarticle”,并返回正确的内容。 这一切都

最后,我们来解决这个问题

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

我们已经设法让404方法在IIS7上工作,但是如果代码中的某个地方有错误,我们已经将iis设置为运行500.asp,它被设计为记录错误并向用户返回有用的消息

因此,流程应该是:

用户类型友好的URL:例如。 它不存在并激发404.asp 404在数据库中查找“testarticle”,并返回正确的内容。 这一切都有效

如果出现错误,请调用500.asp -日志中的日志错误(工作) -将消息返回到屏幕(不工作-仅获取空白页)

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

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

非常感谢你的帮助。。
干杯

我不久前做了一个类似的迁移,这是我最终得到的web.config设置(以及相关部分):


请注意所使用的web.config部分。当使用customErrors元素完成时,它对我不起作用。这是我在经典ASP中使用自定义404错误页面和自定义500错误进行URL重写的唯一方法。希望这对你有帮助。

那么你得到了一张空白页? 我也遇到过类似的问题,这个解决方案很奇怪,但确实有效

我会非常务实,做以下几点

<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>
当IIS执行/500.100.asp内的代码时,它不会刷新响应,并以空白页结束。 我保证IIS7.5/IIS8和经典ASP中可能出现“404”和“500.100”自定义错误;)

<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()