在IIS7上的经典ASP:拒绝在500内部服务器错误时向浏览器发送错误信息。

59

我在 IIS 7 上运行经典 ASP。

即使我将 ASP 的“调试属性”配置为“向浏览器发送错误 = True”,Web 应用程序仍然拒绝向浏览器发送错误,并继续发送 500 内部服务器错误。

  • 我的浏览器未选中“显示友好的 HTTP 错误消息”。
  • 已安装“失败请求跟踪”(不确定是否相关)
  • 在本地服务器上加载的 Web 页面和远程页面都出现此问题。
  • 应用程序池是集成的(不确定是否重要)。

有什么想法吗?

7个回答

93

尝试以下步骤: Internet Information Services(IIS)管理器 —> 默认网站 —> 单击错误页面属性并选择详细错误。


我还必须将我的虚拟目录转换为应用程序。 - Matthew Lock

9

我遇到了一个与Classic ASP应用程序相关的问题,它运行在站点的子文件夹中。我已经启用了详细错误,但是仍然显示500错误。我的解决方法是在IIS的ASP部分中为该站点启用父级路径,因为该应用程序正在使用“../”引用父文件夹:

在IIS中启用经典ASP的父级路径


我总是忘记这个问题。在需要启动新的经典ASP网站之间经过了许多年,然后突然出现奇怪的500错误。这通常就是问题所在。 - Ian Patrick Hughes

8

8

我曾在一个Classic ASP应用程序中遇到了这个问题,它运行在网站的子文件夹中。解决方案如下:

IIS > 点击你的站点 > 点击你的应用程序文件夹 > 错误页面 > 编辑功能设置 > 设置为:详细错误


3
如果您的项目托管在共享环境中,则可以使用以下代码片段查看错误。
<configuration>
<system.webServer>
    <httpErrors errorMode="Detailed" />
</system.webServer>
<system.web>
    <customErrors mode="Off" />
    <compilation debug="true" />
</system.web>

请参考以下网址获取完整信息:http://blogs.iis.net/rickbarber/working-past-500-internal-server-error

希望对某些人有所帮助。


3
如果您的网站配置为作为特定用户连接到网站的物理路径,而不是使用穿透身份验证,如果该用户存在权限错误,则可能会出现此错误。可能还需要重新启动Windows进程激活服务,然后重新启动IIS。

1
这对我来说大致是这种情况:500错误,无法在任何日志文件中显示。但是IIS进程无法打开物理路径(它位于我的主目录中,并且IIS正在使用透传身份验证)。 - David Bullock
就是这样。我们有一个返回错误500的Web服务。应用程序文件夹的权限已被移除。一旦我授予“所有人”读取权限,它就开始工作了。谢谢。 - Zamir

1
我在新服务器(Windows 2019)上安装了一个ASP Classic应用程序后遇到了500错误。无论如何,应用程序上的每个URL都返回500。但是,在Windows事件日志中没有显示任何错误,并且尽管配置了详细错误(正如其他答案中提到的),但浏览器中没有显示特定的错误。
唯一的线索在IIS日志中,它显示HTTP状态代码为500,而IIS子状态代码为19。因此是500.19错误。
这引导我去查看网站,我遇到的具体问题在本节的第二部分得到了解答:

https://learn.microsoft.com/en-us/troubleshoot/iis/http-error-500-19-webpage#hresult-code-0x80070005

这段话的意思是:

不要配置网站使用UNC透传身份验证来访问远程UNC共享。相反,指定一个具有适当权限以访问远程UNC共享的用户帐户。

而(这是我需要做的部分):

授予IIS_IUSRS组对ApplicationHost.config或Web.config文件的读取权限。按照以下步骤操作: 在Windows资源管理器中,找到包含与网站关联的ApplicationHost.config文件的文件夹,或者找到包含与网站关联的Web.config文件的虚拟目录或应用程序目录。 注意:Web.config文件可能不在IIS的虚拟目录或应用程序目录中。即使在这种情况下,您也必须按照以下步骤操作。 右键单击包含ApplicationHost.config文件的文件夹,或者右键单击可能包含Web.config文件的虚拟目录或应用程序目录。 选择“属性”。 选择“安全”选项卡,然后选择“编辑”。 选择“添加”。 在“输入要选择的对象名称”框中,键入\IIS_IUSRS,选择“检查名称”,然后选择“确定”。 注意:是计算机名称的占位符。 选中“读取”复选框,然后选择“确定”。 在文件夹的“属性”对话框中,选择“确定”。 注意:确保文件夹属性被ApplicationHost.config和Web.config文件继承,以便IIS_IUSRS对这些文件具有读取权限。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接