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


192

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

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

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


我使用不同的方式在文本文件中记录错误: stackoverflow.com/questions/20475502/… 主要区别-错误信息将存储在文本文件中
Zam

Answers:


231

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

因此,如果“发送错误到浏览器”不起作用,请进行以下设置:

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

在此处输入图片说明

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


9
如果仍然无法使用,请禁用友好的http错误消息
Tim Partridge

3
如果面板上缺少“错误页面”,请确保已启用该功能:开启或关闭Windows功能=> WWW服务,常见HTTP功能,[x] HTTP错误
2014年

1
@fiat要启用“错误页面”,我必须去:Turn Windows features on or off > Internet Information Services > World Wide Web Services > Common HTTP Features > [✓] HTTP Errors
杰西·特尔福德

注意:“错误页面”“ .NET错误页面”不同。您特别需要“错误页面”
杰西·特尔福德

@JessTelford HOW-TONET错误页面
Kiquenet

94

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

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


1
实际上,对于<system.webserver>我来说,这些设置就足够了,谢谢。
marapet

4
system.webServer即使运行经典ASP,IIS 7+也会读取该部分
Tim Lewis

2
customErrors mode =“ Off”为我做到了
spankmaster79

它不再需要使用customErrors(例如对于IIS 7 +,ASP.NET,经典的应用程序池tedgustaf.com/blog/2011/5/...
Kiquenet

49

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

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

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


可能适用于具有CLASSIC AppPool(未集成)的IIS 7.5,Windows 2008 R2,ASP.NET 4.5.1(WebForms)
Kiquenet,2015年


20

web.config

<system.webServer>

替换(或添加)行

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

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

这是因为默认情况下,IIS7会拦截应用程序生成的HTTP状态代码(例如4xx和5xx),这些代码会在管道的更深处产生。

接下来,启用“ ASP”部分下的“ 向浏览器发送错误 ”,然后在“ 错误页面/编辑功能设置 ”下,选择“详细错误”。

另外,将网站文件夹上的“ 写入”权限授予IIS_IUSRS内置组。


1
对于等效的Power Shell用户,运行:Set-WebConfigurationProperty '/system.WebServer/httpErrors' -Name errorMode -Value Detailed
Blaskovicz

20

TLDR:首先确定要从哪里获取错误(滚动查找与错误相似的屏幕快照),进行更改以获取新内容,然后重复。

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

如果您看到文件位于此处...

%SystemDrive%\ inetpub \ custerr \\ 500.htm

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

IIS默认500错误

...然后,您知道您正在** IIS ** 中看到当前配置的错误页面,而无需更改ASP.net customErrors设置,asp错误详细信息设置或“显示友好的http错误”浏览器设置。

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

“是的,我看到了上述错误...”

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

详细的HTTP错误

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

“但是即使在服务器上浏览,我也看不到详细的错误”

这留下了两种可能性。

  1. 您在服务器上使用的浏览器被配置为在其连接设置中使用代理,因此不会被视为“本地”。
  2. 您实际上并没有浏览到您认为要浏览的站点-通常在涉及负载均衡器时会发生这种情况。执行ping检查以查看dns是否为您提供了服务器上或其他位置的IP。
  3. 您网站的httpErrors设置仅设置为“自定义”。将其更改为“ DetailedLocalOnly”。但是,如果您遇到配置错误,由于站点级别httpErrors也是一个配置项,因此这可能不起作用。在这种情况下,请继续执行#4
  4. 所有网站的httpErrors的默认设置为“自定义”。在这种情况下,您需要单击IIS管理器(而不是特定站点)中的顶级服务器节点,并将那里的httpErrors设置更改为DetailedLocalOnly。如果这是一台内部服务器,并且您不担心泄露敏感信息,也可以将其设置为“详细”,这将使您可以查看服务器以外的其他客户端的错误。
  5. 您在服务器上缺少像UrlRewrite这样的模块(这一点让我非常困扰,并且无论httpErrors设置如何,它通常都会提供通用消息)。

“登录服务器对我来说不是一种选择”

将站点的httpErrors更改为“详细”,以便可以远程查看。但是,如果它不起作用,您的错误可能已经是配置错误,请参见上面的#3。因此,您可能会陷入#4或#5的困境,并且需要服务器团队中的某个人。

“我没有看到上面描述的错误页面。我看到了不同的东西”

如果看到这个...

在此处输入图片说明

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

在此处输入图片说明

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

如果看到这个...

即友好错误1

或这个...

即友善错误2

...您需要在浏览器中禁用友好错误,或者使用提琴手的网络视图查看实际响应与浏览器选择显示的内容。

如果看到这个...

启用自定义错误

...那么自定义错误起作用了,但是您没有自定义错误页面(当然,这时谈论的是.net而不是经典的ASP)。您需要将web.config中的customErrors标记更改为RemoteOnly以在服务器上查看,或者将Off更改为远程查看。

如果您看到的样式类似于您的网站,则自定义错误很可能在On或RemoteOnly上,并显示自定义页面(例如,MVC中的Views-> Shared-> Error.cshtml)。就是说,不太可能但有可能有人更改了IIS中针对httpErrors的页面,因此请参阅第一部分。


9

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

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

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


3

您还可以验证是否将主网站文件夹(c:\inetpub\wwwroot)更改为另一个文件夹,必须授予新文件夹中IIS_IUSRS组的读取权限。


3

像我这样尝试过一切却又无法显示错误详细信息的人,像我一样,最好检查一下不同级别的配置。我在网站级别和应用程序级别(在网站内部)都有一个配置文件,请同时检查两者。另外,事实证明,我在IIS的最高节点上禁用了“详细错误”(就在“开始页”下方,它的名称与Web服务器的计算机名相同)。检查错误页面。



1

如果在服务器中运行浏览器并使用本地ip测试项目的url,则您会收到该项目的所有错误,而没有一般错误页面(例如500错误页面)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.