Answers:
因此,如果“发送错误到浏览器”不起作用,请进行以下设置:
错误页面-> 500->编辑功能设置->“详细错误”
还要注意,如果发回的错误页面的内容很短并且您使用的是IE,则IE会很乐意忽略服务器发回的有用内容,而是显示自己的常规错误页面。您可以在IE的选项中将其关闭,或使用其他浏览器。
Turn Windows features on or off > Internet Information Services > World Wide Web Services > Common HTTP Features > [✓] HTTP Errors
。
HOW-TO
为NET错误页面?
如果您在远程服务器上,则可以这样配置web.config文件:
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
<system.webserver>
我来说,这些设置就足够了,谢谢。
system.webServer
即使运行经典ASP,IIS 7+也会读取该部分
customErrors
(例如对于IIS 7 +,ASP.NET,经典的应用程序池) tedgustaf.com/blog/2011/5/...
在IIS管理员的站点主屏幕中,双击“ ASP”,展开“调试属性”,启用“将错误发送到浏览器”,然后单击“应用”。
在主屏幕上的“错误页面”下,选择“ 500”,然后选择“编辑功能设置”,然后选择“详细错误”。
请注意,相同的步骤适用于IIS 8.0(Windows Server 2012)。
在web.config下
<system.webServer>
替换(或添加)行
<httpErrors errorMode="Detailed"></httpErrors>
与
<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>
这是因为默认情况下,IIS7会拦截应用程序生成的HTTP状态代码(例如4xx和5xx),这些代码会在管道的更深处产生。
接下来,启用“ ASP”部分下的“ 向浏览器发送错误 ”,然后在“ 错误页面/编辑功能设置 ”下,选择“详细错误”。
另外,将网站文件夹上的“ 写入”权限授予IIS_IUSRS内置组。
Set-WebConfigurationProperty '/system.WebServer/httpErrors' -Name errorMode -Value Detailed
TLDR:首先确定要从哪里获取错误(滚动查找与错误相似的屏幕快照),进行更改以获取新内容,然后重复。
如果您看到文件位于此处...
%SystemDrive%\ inetpub \ custerr \\ 500.htm
...通常看起来像这样:
...然后,您知道您正在** IIS ** 中看到当前配置的错误页面,而无需更改ASP.net customErrors设置,asp错误详细信息设置或“显示友好的http错误”浏览器设置。
您可能希望查看上面引用的路径,而不是信任我的屏幕截图,以防万一有人对其进行了更改。
在这种情况下,您会看到< httpErrors > 的设置,或者在IIS管理器中是错误页面 ->编辑功能设置。在服务器节点级别(而不是站点级别),此选项的默认值为errorMode = DetailedLocalOnly,这意味着虽然在远程时将看到此配置的错误页面,但您应该能够本地登录到服务器并查看完整的信息。错误,看起来应该像这样:
此时,您应该拥有修复当前错误所需的一切。
这留下了两种可能性。
将站点的httpErrors更改为“详细”,以便可以远程查看。但是,如果它不起作用,您的错误可能已经是配置错误,请参见上面的#3。因此,您可能会陷入#4或#5的困境,并且需要服务器团队中的某个人。
...您希望看到这样的东西...
...然后您需要在IIS管理器中的“站点-> IIS-> ASP->调试属性”下将“发送错误到浏览器”更改为true。
或这个...
...您需要在浏览器中禁用友好错误,或者使用提琴手的网络视图查看实际响应与浏览器选择显示的内容。
如果看到这个...
...那么自定义错误起作用了,但是您没有自定义错误页面(当然,这时谈论的是.net而不是经典的ASP)。您需要将web.config中的customErrors标记更改为RemoteOnly以在服务器上查看,或者将Off更改为远程查看。
如果您看到的样式类似于您的网站,则自定义错误很可能在On或RemoteOnly上,并显示自定义页面(例如,MVC中的Views-> Shared-> Error.cshtml)。就是说,不太可能但有可能有人更改了IIS中针对httpErrors的页面,因此请参阅第一部分。
请尝试将“ existingResponse” httpErrors属性的值设置为“ PassThrough”。我的位置设置为“替换”,这导致YSOD无法显示。
<httpErrors errorMode="Detailed" existingResponse="PassThrough">
找到了。
以管理员身份运行cmd,转到system32 \ inetsrv文件夹并执行:
appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true
现在,我可以看到详细的asp错误。
如果在服务器中运行浏览器并使用本地ip测试项目的url,则您会收到该项目的所有错误,而没有一般错误页面(例如500错误页面)。