IIS 7.5处理500个错误与IIS 6.0不同

时间:2012-04-02 19:55:49

标签: web-services http asp-classic iis-6 iis-7.5

我们的Classic ASP应用程序包含一个可以通过HTTP调用的Web服务。 POST或GET。 Web服务尽职,然后使用Response.Write通过HTTP写出XML消息。

这是一个例子。

Response.ContentType = "text/xml"
Response.Status      = "500 Error"
Response.Write("<?xml version=""1.0"" ?>")
Response.Write("<PeelMe>")
Response.Write("<Error>Your orange was actually blue!</Error>")
Response.Write("</PeelMe>")

当应用程序在IIS 6.0中托管时,调用者收到了XML,并且能够很好地解析它。

然后,我们切换到IIS 7.5。

在IIS 6.0中,我们设置了一个客户错误页面,让我们称之为“Blah.asp”,在实际用户浏览网站时发生错误时向浏览器呈现某些自定义文本。当我们切换到IIS 7.5时,写入Web服务调用者的所有500条错误消息现在都被IIS 7.5捕获,将线程重定向到Blah.asp,然后将Blah.asp的HTML写回调用者。

这是我的问题:

如何使IIS 7.5像IIS 6.0一样运行,以便当我想将500错误消息写回Web服务调用者时,我可以这样做,而不会让IIS 7.5的自定义错误处理妨碍?

2 个答案:

答案 0 :(得分:0)

您是否尝试将应用池设置为asp经典?我们最近做了很多升级;不断遇到7.5的问题。

重新设置应用程序池,可能会解决80%的问题。

答案 1 :(得分:0)

从IIS7开始,web.config提供了更多选项。您可以尝试以下方法来获得您所追求的bevaviour:

<system.webServer>
    <httpErrors errorMode="Detailed">
        <remove statusCode="500" subStatusCode="-1" />
        <error statusCode="500" prefixLanguageFilePath="" path="/[CUSTOMERRORPAGE].asp" responseMode="ExecuteURL" />
    </httpErrors>
</system.webServer>