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

时间:2010-04-14 19:49:25

标签: asp-classic error-handling iis-7.5

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

  

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

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

13 个答案:

答案 0 :(得分:218)

我遇到了同样的问题并修复了same way as Alex K

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

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

enter image description here

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

答案 1 :(得分:88)

如果您在远程服务器上,则可以像这样配置web.config文件:

<configuration>
<system.webServer>
    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
    <customErrors mode="Off"/>
    <compilation debug="true"/>
</system.web>

答案 2 :(得分:46)

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

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

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

答案 3 :(得分:42)

在尝试Vaclav'sAlex's回答后,我仍然需要在IE中禁用“显示友好的HTTP错误消息”

enter image description here

答案 4 :(得分:18)

下的 web.config
<system.webServer>

替换(或添加)

<httpErrors errorMode="Detailed"></httpErrors>

<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>

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

接下来,启用&#34; 向浏览器发送错误&#34;根据&#34; ASP&#34;部分,并在&#34; 错误页面/编辑功能设置&#34;,选择&#34;详细错误&#34;。

另外,将网站文件夹中的写入权限提供给 IIS_IUSRS 内置组。

答案 5 :(得分:12)

TLDR:首先确定您从哪个管道中获取错误(滚动查找类似于您的错误的屏幕截图),进行更改以获取新内容,重复。

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

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

%系统​​驱动%\的Inetpub \ custerr \\ 500.htm

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

IIS Default 500 error

...然后您知道您在** IIS **中看到当前配置的错误页面,并且您无需更改customErrors设置,asp错误详细设置或&#34;显示友好的http错误&#34;浏览器设置。

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

&#34;是的,我看到上述错误......&#34;

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

Detailed HTTP Error

此时您应该拥有修复当前错误所需的一切。

&#34;但即使在服务器上浏览,我也看不到详细错误&#34;

这留下了几种可能性。

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

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

    &#34;我没有看到上述错误页面。我看到了不同的东西&#34;

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

    enter image description here

    ......你希望看到类似的东西......

    enter image description here

    ...然后您需要更改&#34;将错误发送到浏览器&#34;在IIS管理器中,在“站点”下的“真” - > IIS - &gt; ASP - &gt;调试属性

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

    ie friendly errors 1

    或者这......

    ie friendly errors 2

    ...您需要在浏览器中停用友好错误或使用fiddler的网页浏览来查看实际响应与浏览器选择向您展示的内容。

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

    Custom errors enabled

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

    如果您看到的内容与您的网站类似,那么自定义错误很可能是On或RemoteOnly,并且它会显示自定义页面(例如,视图 - &gt;共享 - &gt; Error.cshtml在MVC中)。也就是说,有可能有人在IIS中为httpErrors更改了页面,所以请看第一部分。

答案 6 :(得分:9)

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

<httpErrors errorMode="Detailed" existingResponse="PassThrough">

答案 7 :(得分:6)

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

答案 8 :(得分:3)

您还可以验证,如果您将主网站文件夹(c:\inetpub\wwwroot)更改为其他文件夹,则必须为新文件夹中的 IIS_IUSRS组授予读取权限。

答案 9 :(得分:2)

已经尝试过一切的人们只是无法得到错误的详细信息,就像我一样,检查不同级别的配置是个好主意。我在网站级别和应用程序级别(在网站内)有一个配置文件检查两者。另外,事实证明,我在IIS的最高节点上禁用了详细错误(在Start Page下面,它的名称与webservers计算机名称相同)。检查那里的错误页面。

答案 10 :(得分:1)

找到它。

http://blogs.iis.net/ksingla/archive/2009/02/16/iis-7-5-updates-to-custom-errors-and-compression.aspx

以管理员身份运行cmd,转到system32 \ inetsrv文件夹并执行:

appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true

现在我可以看到详细的asp错误。

答案 11 :(得分:1)

如果您在服务器中运行浏览器并使用本地IP测试项目的网址,则表示您已收到该项目的所有错误,而且通常没有错误页面(例如500错误页面)。

答案 12 :(得分:0)

就我而言,这是权限问题。 打开应用程序文件夹属性->安全选项卡->编辑->添加

  • IIS AppPool \ [DefaultAppPool或任何其他apppool](如果使用ApplicationPoolIdentity选项)
  • IUSRS
  • IIS_IUSRS