如果你在 IIS 7 中只看到诸如 HTTP Error 500 – Internal Server Error (500 – 内部服务器错误) 的简单错误信息,那么可以通过如下步骤配置 IIS7 以输出详细错误信息。
通过 IIS 配置
- 按住 WIN + R 打开命令行输入 inetmgr 打开 IIS 管理
- 左边目录选择目标站点,在右边 IIS 块中双击 Error Pages
- 在 Error Pages 中右边的 Actions,选择 Edit Feature Settings
- 在 Error Responses 中,选择 Detailed errors,单机 OK 完成配置。
通过命令行
启用详细错误:
%windir%\system32\inetsrv\appcmd.exe set config “Default Web Site/yourapp” /section:httpErrors /errorMode:Detailed
禁用详细错误:
%windir%\system32\inetsrv\appcmd.exe set config “Default Web Site/yourapp” /section:httpErrors /errorMode:Custom
通过 web.config 配置
其实,上面在两种配置,最终都会反应到对应的 web.config 中。因此,我们可以直接编辑 web.config。特别是对于买的虚拟主机(Shared Web Hosting),没有权限更改IIS。打开网站目录,找到 web.config 文件(如果没有,就建立一个 txt 文件存为 web.config),找到 system.webServer 配置节,添加配置 <httpErrors errorMode=”DetailedLocalOnly” />。
[code:xml]
<configuration>
<system.webServer>
<httpErrors errorMode=”DetailedLocalOnly” />
</system.webServer>
</configuration>
[/code]
注意
- 此参数选项可以应用到网站或子目录或虚拟目录。
- 此参数选项对所有 IIS 应用程序有效,包括 ASP, APS.NET, PHP 等。
如果是 ASP.NET 程序,可能还需要配置 <customErrors mode=”Off” />
[code:xml]
<system.web>
<customErrors mode=”Off” />
</system.web>
[/code]
此外,如果是 ASP 程序,还可以配置 sendErrorsToBrowser 选项:
通过 IIS 配置
- 按住 WIN + R 打开命令行输入 inetmgr 打开 IIS 管理
- 左边目录选择目标站点,在右边 IIS 块中双击 ASP
- 在 ASP 页中展开 Debugging Properties 节点
- 找到 Send Errors To Browser ,选择 true
- 右边 Actions 中,单击 Apply
通过命令行
启用:
%windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true
禁用:
%windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:false
注意上面参数中 config 后面不能指定站点目录