详细500错误消息,ASP + IIS 7.5

egi*_*ocs 183 error-handling asp-classic iis-7.5

IIS 7.5,2008rc2,经典asp,500错误消息:

由于发生内部服务器错误,无法显示页面.

我需要知道如何配置IIS以获得更详细的错误.
我已经尝试在ASP配置中设置为true所有调试选项.
但那没用.谁能帮我?

Vac*_*ias 225

我遇到了同样的问题,并以与Alex K相同的方式修复.

因此,如果"将错误发送到浏览器"不能正常工作,那么:

错误页面 - > 500 - >编辑功能设置 - >"详细错误"

在此输入图像描述

另请注意,如果发回的错误页面的内容非常短并且您正在使用IE,IE将很乐意忽略服务器发回的有用内容,并向您显示其自己的通用错误页面.您可以在IE的选项中关闭它,或使用其他浏览器.

  • `错误页面 - > 500 - >编辑功能设置 - >"详细错误"`谢谢!!!!! (14认同)
  • 如果它仍然无法正常工作,[禁用友好的http错误消息](http://stackoverflow.com/a/15008842/224976) (8认同)
  • 如果面板中缺少"错误页面",请确保已启用该功能:打开或关闭Windows功能=> WWW服务,常见HTTP功能,[x] HTTP错误 (3认同)

小智 91

如果您在远程服务器上,则可以配置web.config文件,如下所示:

<configuration>
<system.webServer>
    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
    <customErrors mode="Off"/>
    <compilation debug="true"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)

  • 即使在运行经典ASP时,IIS 7+也会读取`system.webServer`部分 (4认同)
  • customErrors mode ="Off"为我做了 (2认同)

Ale*_* K. 47

在IIS管理员的站点主屏幕中双击"ASP",展开"调试属性",启用"向浏览器发送错误",然后单击"应用".

在主屏幕上的"错误页面"下选择"500",然后选择"编辑功能设置"并选择"详细错误".

请注意,相同的步骤适用于IIS 8.0(Windows Server 2012).


Tim*_*dge 42

在尝试了VaclavAlex的回答之后,我仍然不得不在IE中禁用"显示友好的HTTP错误消息"

在此输入图像描述


小智 20

web.config

<system.webServer>
Run Code Online (Sandbox Code Playgroud)

替换(或添加)该行

<httpErrors errorMode="Detailed"></httpErrors>
Run Code Online (Sandbox Code Playgroud)

<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>
Run Code Online (Sandbox Code Playgroud)

这是因为默认情况下,IIS7拦截HTTP状态代码,例如由管道上的应用程序生成的4xx和5xx.

接下来,在"ASP"部分下启用" 将错误发送到浏览器 ",在" 错误页面/编辑功能设置 "下,选择"详细错误".

此外,将网站文件夹的写权限授予IIS_IUSRS内置组.

  • 对于 Power shell 用户等效项,运行:`Set-WebConfigurationProperty '/system.WebServer/httpErrors' -Name errorMode -ValueDetailed` (2认同)

b_l*_*itt 17

TLDR:首先确定你从哪个管道中得到错误(滚动查找类似于你的错误的屏幕截图),进行更改以获得新的东西,重复.

首先确定您实际看到的错误消息.

如果您看到此处的文件...

的%SystemDrive%\的Inetpub\custerr \\ 500.htm

......通常看起来像这样:

IIS默认500错误

...然后你知道你在**IIS**中看到当前配置的错误页面,你不需要更改customErrors设置,asp错误详细设置或"show friendly http errors"浏览器设置.

您可能希望查看上面引用的路径,而不是信任我的屏幕截图,以防万一有人更改它.

"是的,我看到上述错误......"

在这种情况下,您将看到< httpErrors > 的设置,或者在IIS管理器中看到错误页面 - >编辑功能设置.默认设置是服务器节点级别的 errorMode = DetailedLocalOnly (而不是站点级别),这意味着虽然您将在远程时看到此配置的错误页面,但您应该能够在本地登录到服务器并查看完整错误应该看起来像这样:

详细的HTTP错误

您应该拥有此时需要的所有内容来修复当前错误.

"但我甚至没有看到在服务器上浏览的详细错误"

这留下了几种可能性.

  1. 您在服务器上使用的浏览器配置为在其连接设置中使用代理,因此不会将其视为"本地".
  2. 您实际上并没有浏览到您认为正在浏览的网站 - 这通常发生在涉及负载均衡器时.执行ping检查以查看dns是否在服务器或其他位置为您提供IP.
  3. 您站点的httpErrors设置仅设置为"自定义".将其更改为"DetailedLocalOnly".但是,如果您遇到配置错误,则可能无法正常工作,因为站点级别httpErrors也是配置项.在那种情况下,进入#4
  4. 所有网站的httpErrors默认设置为"自定义".在这种情况下,您需要单击IIS管理器中的顶级服务器节点(而不是特定站点)并将其中的httpErrors设置更改为DetailedLocalOnly.如果这是一个内部服务器,并且您不担心泄露敏感信息,您也可以将其设置为"详细",这将允许您从服务器以外的客户端查看错误.

"登录服务器对我来说不是一个选择"

将您网站的httpErrors更改为"详细",以便远程查看.但如果它不起作用,您的错误可能已经是配置错误,请参见上面的#3.所以你可能会被#4困住,而你需要服务器团队中的某个人.

"我没有看到上面描述的错误页面.我看到了不同的东西"

如果你看到这个......

在此输入图像描述

......你希望看到这样的东西......

在此输入图像描述

...然后你需要在IIS管理器中的"站点 - > IIS - > ASP - >调试属性"下更改"将错误发送到浏览器"为true

如果你看到这个......

即友好的错误1

或这个...

即友好错误2

...您需要在浏览器中禁用友好错误或使用fiddler的webview查看实际响应与浏览器选择向您显示的内容.

如果你看到这个......

启用自定义错误

...然后自定义错误正在运行但你没有自定义错误页面(当然此时正在谈论.net而不是经典的asp).您需要将web.config中的customErrors标记更改为RemoteOnly以在服务器上查看,或者Off以远程查看.

如果你看到像你的网站样式的东西,那么自定义错误可能是On或RemoteOnly并且它显示自定义页面(例如,MVC中的Views-> Shared-> Error.cshtml).也就是说,有可能有人在IIS中为httpErrors更改了页面,所以请看第一部分.


Dan*_*son 9

尝试将"existingResponse"httpErrors属性的值设置为"PassThrough".我的设置为"替换",导致YSOD无法显示.

<httpErrors errorMode="Detailed" existingResponse="PassThrough">
Run Code Online (Sandbox Code Playgroud)

  • customErrors适用于asp.net。httpError适用于IIS7,因此可以处理未通过.net处理程序的内容(例如.png,.js等)。如果您想要非.net内容类型的错误页面,请使用IIS错误页面(针对IIS7的httpErrors (IIS6的用户界面。)当.net代码引发异常(404、403、500等)时使用customErrors属性,而当IIS本身引发异常时使用httpErrors属性。这是因为默认情况下,IIS7会拦截应用程序生成的HTTP状态代码(例如4xx和5xx),这些代码会在管道的更深处产生。 (2认同)

Ran*_*s1r 6

没有人提到的一件事是作为一个非常快速和临时的修复,您可以在该Web服务器的本地主机上查看错误.