结束了这个问题。
我正在一个繁忙的网站上工作,我们已经从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中的每个设置,但我们无法使其正常工作。
任何帮助非常感谢.. 干杯
答案 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”自定义错误;)