2010-02-26 77 views
32

我刚刚在我的第一台Windows Server 2008/IIS7.5服务器上安装了我参加的比赛。我不能为我的生活弄清楚如何关闭错误处理完全。我看到的唯一选项是:关闭IIS7 HTTP错误处理?

  • 定制
  • 详细
  • 详细的本地,远程

我想彻底关闭该功能自定义,我没有看到任何方式要做到这一点。我错过了什么吗?

我的情况:

我有一个RESTful PHP框架,捕获异常,如果异常尚未处理发出HTTP 500状态。然后它将指定的异常消息放入响应主体并发送给浏览器。这在Apache中正常工作 - 发送正确的标题并将消息显示给用户。然而,在IIS中,4xx和5xx HTTP状态码的响应总是被拦截并注入其他一些准备好的消息或HTML文件,这正是我不希望它再做的事情。请帮忙!

回答

63

后一些更广泛的搜索,我发现这里的答案:

http://blogs.msdn.com/webdevelopertips/archive/2009/08/24/tip-93-did-you-know-php-and-custom-error-pages-configuration.aspx

解决的办法是与此自定义 “httpErrors” 手动编辑的web.config文件进入:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors existingResponse="PassThrough" /> 
    </system.webServer> 
</configuration> 

但是,由于IIS 7.0“锁定”功能,您可能会收到一个“此配置节不能用于此路径。嘲笑父母一级。“错误。要解决该问题,请在命令提示符下执行以下命令:

cd C:\Windows\System32\inetsrv 

appcmd unlock config /section:httpErrors 
2

在IIS管理器 - >站点 - >错误页面中,右键单击每个错误页面并选择“删除”。

不幸的是,没有办法告诉IIS不要从脚本端干涉,所以它总是一个讨厌的部署问题。