详细的500错误消息,ASP + IIS 7.5
IIS 7.5,2008rc2,经典asp,500错误信息:
页面无法显示,因为发生了内部服务器错误。
我需要知道如何configurationIIS以获得更详细的错误。
我已经尝试将ASPconfiguration中的所有debugging选项设置为true。
但是这没有用。 任何人都可以帮我吗?
我遇到了和Alex K一样的问题。
所以如果“发送错误到浏览器”不工作设置也是这样的:
错误页面 – > 500 – >编辑function设置 – >“详细错误”
另外请注意,如果发回的错误页面的内容非常短,而且您正在使用IE,IE会高兴地忽略服务器发回的有用内容,而不是显示自己的通用错误页面。 您可以在IE的选项中closures此function,或使用其他浏览器。
如果你在远程服务器上,你可以像这样configuration你的web.config文件:
<configuration> <system.webServer> <httpErrors errorMode="Detailed" /> <asp scriptErrorSentToBrowser="true"/> </system.webServer> <system.web> <customErrors mode="Off"/> <compilation debug="true"/> </system.web>
双击IISpipe理站点主屏幕中的“ASP”,展开“debugging属性”,启用“向浏览器发送错误”,然后点击“应用”。
在主屏幕的“错误页面”下,select“500”,然后select“编辑function设置”,然后select“详细错误”。
请注意,相同的步骤适用于IIS 8.0(Windows Server 2012)。
在尝试了Vaclav和Alex的回答之后,我仍然不得不在IE中禁用“显示友好的HTTP错误消息”
在web.config下
<system.webServer>
replace(或添加)该行
<httpErrors errorMode="Detailed"></httpErrors>
同
<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>
这是因为默认情况下,IIS7拦截进一步在pipe道中的应用程序生成的HTTP状态代码,例如4xx和5xx。
接下来,在“ASP”部分启用“ 发送错误到浏览器 ”,在“ 错误页面/编辑function设置 ”下,select“详细错误”。
此外,将网站文件夹的写入权限授予 IIS_IUSRS内置组。
尝试将“existingResponse”httpErrors属性的值设置为“PassThrough”。 我被设置为“replace”,导致YSOD不显示。
<httpErrors errorMode="Detailed" existingResponse="PassThrough">
有一件事没有人提到是一个非常快速和临时的修复,你可以查看该Web服务器的本地主机上的错误。
您也可以validation,如果您将主网站文件夹( c:\inetpub\wwwroot
)更改为另一个文件夹,则必须为新文件夹中的IIS_IUSRS组提供读取权限。
TLDR:首先确定pipe道中的错误来源(滚动查找类似于错误的东西的截图),做出更改以获得新的东西,重复。
#1首先确定你实际看到了什么错误信息。
如果你看到这里的文件…
的%SystemDrive%\的Inetpub \ custerr \\ 500.htm
…一般看起来像这样:
…那么你知道你正在** IIS ** 中看到当前configuration的错误页面 ,你不需要改变customErrors设置,asp错误细节设置或者“显示友好的http错误”浏览器设置。
你可能想看看上面引用的path,而不是相信我的截图,以防万一有人改变它。
“是的,我看到上面描述的错误…”
在这种情况下,您将看到< httpErrors >的设置,或者在IISpipe理器中显示错误页面 – >编辑function设置。 默认情况下,errorMode = DetailedLocalOnly在服务器节点级别(而不是站点级别) ,这意味着尽pipe您将在远程看到此configuration的错误页面,但您应该能够本地login到服务器并查看完整错误应该是这样的:
你应该拥有你需要的一切来修复当前的错误。
“但是,即使在服务器上浏览,我也没有看到详细的错误”
这留下了一些可能性。
- 您在服务器上使用的浏览器被configuration为在其连接设置中使用代理,因此不会被视为“本地”。
- 您实际上并没有浏览到您认为正在浏览的网站 – 当涉及负载平衡器时,通常会发生这种情况。 做一个ping检查,看看DNS是否给你在服务器上或其他地方的IP。
- 您网站的httpErrors设置仅设置为“自定义”。 将其更改为“DetailedLocalOnly”。 但是,如果您有configuration错误,这可能无法正常工作,因为站点级httpErrors也是一个configuration项目。 在这种情况下,进入#4
- 所有网站的httpErrors默认设置为“自定义”。 在这种情况下,您需要单击IISpipe理器(而不是特定站点)中的顶级服务器节点,然后将httpErrors设置更改为DetailedLocalOnly。 如果这是一个内部服务器,并且您不担心泄露敏感信息,您也可以将其设置为“详细”,这将允许您从服务器以外的客户端看到错误。
“login到服务器不是我的select”
将您的网站的httpErrors更改为“详细”,以便您可以远程查看。 但是,如果它不工作,你的错误可能已经是一个configuration错误,请参阅上面的#3。 所以你可能会被困在#4,你将需要从你的服务器团队的人。
“我没有看到上面描述的错误页面,我看到了不同的东西”
如果你看到这个…
…你希望看到这样的事情…
…那么你需要改变“发送错误浏览器”在IISpipe理器,在站点 – > IIS – > ASP – >debugging属性
如果你看到这个…
…你需要在你的浏览器中禁用友好的错误,或使用小提琴的webview来看看实际的反应与你的浏览器select向你展示的东西。
如果你看到这个…
…然后自定义错误正在工作,但你没有一个自定义的错误页面(当然在这一点上是谈论.NET和不经典的ASP)。 您需要将您的customErrors标签更改为RemoteOnly以在服务器上查看,或者closures以远程查看。
如果您看到类似于您的网站的样式,那么自定义错误可能是On或RemoteOnly,并显示自定义页面(例如,MVC中的Views-> Shared-> Error.cshtml)。 也就是说,不太可能有人更改了httpErrors在IIS中的页面,所以请参阅第一部分。
对于那些已经尝试了一切而且无法得到错误细节的人来说,像我一样,检查不同级别的configuration是个好主意。 我有一个网站级别和应用程序级别(在网站内)检查两个configuration文件。 另外,事实certificate,我在IIS中的最高节点上禁用了“详细错误”(在“起始页”下方,其名称与Web服务器计算机名称相同)。 在那里检查错误页面。
find了。
以pipe理员身份运行cmd,转到您的system32 \ inetsrv文件夹并执行:
appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true
现在我可以看到详细的asp错误。