IIS 7.5,2008rc2,经典asp,500错误消息:
由于发生内部服务器错误,无法显示页面。
我需要知道如何配置IIS以获得更详细的错误 我已经尝试在ASP配置中设置为true所有调试选项 但那没用。任何人都可以帮助我吗?
答案 0 :(得分:218)
我遇到了同样的问题并修复了same way as Alex K。
因此,如果“将错误发送到浏览器”不能正常工作,那么:
错误页面 - > 500 - >编辑功能设置 - > “详细错误”
另请注意,如果发回的错误页面的内容非常短并且您正在使用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)
答案 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 **中看到当前配置的错误页面,并且您无需更改customErrors设置,asp错误详细设置或&#34;显示友好的http错误&#34;浏览器设置。
您可能希望查看上面引用的路径,而不是信任我的屏幕截图,以防有人更改它。
在这种情况下,您看到&lt; httpErrors&gt;的设置或者在IIS管理器中Error Pages - &gt;编辑功能设置。默认设置为服务器节点级别的errorMode = DetailedLocalOnly(而不是站点级别),这意味着虽然您将在远程时看到此配置的错误页面,但您应该能够在本地登录到服务器并看到完整的错误,看起来像这样:
此时您应该拥有修复当前错误所需的一切。
这留下了几种可能性。
将您的网站httpErrors更改为&#34;详细&#34;所以你可以远程看到它。但如果它不起作用,您的错误可能已经是配置错误,请参见上面的#3。所以你可能会被#4困住,而你需要服务器团队中的某个人。
......你希望看到类似的东西......
...然后您需要更改&#34;将错误发送到浏览器&#34;在IIS管理器中,在“站点”下的“真” - > IIS - &gt; ASP - &gt;调试属性
或者这......
...您需要在浏览器中停用友好错误或使用fiddler的网页浏览来查看实际响应与浏览器选择向您展示的内容。
如果你看到这个......
...然后自定义错误正在运行,但您没有自定义错误页面(当然此时正在讨论.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)
找到它。
以管理员身份运行cmd,转到system32 \ inetsrv文件夹并执行:
appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true
现在我可以看到详细的asp错误。
答案 11 :(得分:1)
如果您在服务器中运行浏览器并使用本地IP测试项目的网址,则表示您已收到该项目的所有错误,而且通常没有错误页面(例如500错误页面)。
答案 12 :(得分:0)
就我而言,这是权限问题。 打开应用程序文件夹属性->安全选项卡->编辑->添加