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

问题描述:

我们的传统ASP应用程序包含可以通过HTTP调用的Web服务。 POST或GET。 Web服务执行其职责,然后使用Response.Write写出一条XML上的HTTP消息。IIS 7.5处理与IIS 6.0不同的500个错误

这里是一个例子。

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的自定义错误处理阻碍了吗?

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

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

+0

我们的系统大师回答你的问题: “应用程序池被设置为‘集成’,因为‘经典’是造成部分ASP.NET我的理解是,该设置不会影响经典ASP,只是ASP.NET应用程序。“ – crackedcornjimmy 2012-04-02 20:44:35

由于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> 
+0

你能仔细解释一下这段代码在做什么吗? – crackedcornjimmy 2012-04-03 14:03:31