【问题标题】:IIS 7.5 Handling 500 Errors Differently Than IIS 6.0IIS 7.5 处理 500 错误的方式与 IIS 6.0 不同
【发布时间】:2012-04-16 11:57:28
【问题描述】:

我们的经典 ASP 应用程序包含一个可以通过 HTTP 调用的 Web 服务。发布或获取。 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 的自定义错误处理?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我们的系统专家回答您的问题时说:“应用程序池设置为'集成',因为'经典'导致 ASP.NET 部分无法工作。我的理解是该设置不会影响经典 ASP,只是 ASP.NET 应用程序。”
      猜你喜欢
      • 1970-01-01
      • 2016-08-07
      • 2012-02-16
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多