如何解决 IIS7.0 上的 "HTTP 错误 500.19 - 内部服务器错误"?

243

这个错误是由什么引起的?我该如何修复它?

详细错误信息
模块 IIS Web Core
通知 BeginRequest
处理程序 尚未确定
错误代码 0x8007052e
配置错误 无法使用管理员用户和虚拟目录密码本地登录到 C:\inetpub\wwwroot
配置文件 不可用(配置隔离)
请求 URL http://192.168.0.3:80/
物理路径 C:\inetpub\wwwroot
登录方法 尚未确定
登录用户 尚未确定

配置源

<application path="/" applicationPool="PS-Extranet">
    <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" userName="administrator" password="[enc:AesProvider:PrISRz2ggJH4bV46ktObfCSh91Y/yF9pAoLmH7eCnj0=:enc]" />
</application>

1
“真正”的错误信息通常在页面的某个地方。如果您想要在这个问题上获得帮助,您应该发布您所收到的错误页面的全部内容。 - John Farrell
1
只是想为那些通过谷歌搜索并找到这个问题的人指出一些事情,如果不明显的话:我正在使用带有IISExpress的VS2012。 我无意中删除了c:/Users/[YOUR USER NAME]/MyDoocuments/MyWebsites/[THE WEBSITE]文件夹。 它是一个空文件夹(由于某种原因,我的大脑说要删除它)。 一旦我从回收站还原它,一切都好了。 抱歉发表评论,但它似乎比最终可能看不到的答案更好。 如果这里没有其他方法,这只是一种替代方法。 - REMESQ
2
看看这个是否有效:(1)进入IIS管理器,(2)打开网站的高级设置窗口,(3)将物理路径凭据设置为管理员用户。 - Jeremy Ray Brown
也可以在这里看一下 http://blogs.msdn.com/b/webtopics/archive/2010/03/08/troubleshooting-http-500-19-errors-in-iis-7.aspx - NoWar
我知道这是旧帖子,但这是对我有效的方案(简单解决方法),我只是关闭并重新打开了 Visual Studio,它就可以工作了。我遇到了完全相同的错误。当我检查我的git命令提示符时,我发现.vs/config/applicationhost.config文件已更改,并且更新了虚拟目录路径。 - S52
显示剩余3条评论
31个回答

463

我曾经遇到了同样的问题,但是原因不同。

在我的 web.config 文件里有一个 URL 重写模块规则,并且我也没有安装 URL 重写模块。当我安装 URL 重写模块 后,问题得到解决。


81
由于配置部分无法理解,出现了1000个完全荒谬的错误信息。 - Chris Marisic
5
@ChrisMarisic -- 是和不是。这个错误信息并不直接有用,但它是正确的。没有 URL 重写模块,所以没有 <urlRewrite> 配置部分是有效的,因此配置在技术上是格式不正确的。现在为什么他们不能输出一个更好的错误消息超出了我的理解。 - Wyatt Barnett
22
这个错误信息无法原谅的地方在于,当它显示配置源时(至少在我的电脑上),它会显示一个空白窗口,里面有代码行"-1"和"0"。它应该显示你配置中的"<rewrite>"部分,并警告你它不知道这是什么…… - JoeCool
20
我希望微软有一个面孔,这样我就可以为那个毫无用处的错误信息出气打它。 - Yatrix
3
哇,微软又一次失误了。 - schmoopy
显示剩余9条评论

166

看起来你用于应用程序池的用户帐户没有访问网站目录的权限,因此无法从那里读取配置文件。检查应用程序池并查看它配置为以哪个用户身份运行。检查目录并查看该用户是否具有适当的权限。在此同时,检查事件日志并查看IIS是否在那里记录了更详细的诊断信息。


正确的布鲁斯,今天早上已经解决了这个问题。看起来系统管理员更改了服务器上的帐户密码,但忘记更改虚拟目录的用户帐户登录。似乎当网站处于闲置状态并关闭应用程序进程时,错误会在夜间显示。感谢您的答案。 - Stuart
对我来说,是IT部门更改了服务账户的密码。 - JanBorup
@Bruce:我正在本地工作,但是遇到了相同的错误。在这种情况下该怎么办? - Nad
37
这个问题的被接受的答案是一个很好的解答,涉及到常见的问题,但对于我们这些遇到比较隐晦问题的人来说,Jomy John的回答目前得票更高。它涉及到web.config文件中的<rewrite>标签。我在评论中提到它,因为它在页面下面,我差点错过它。 - Chad McGrath
4
专业提示:按投票排序答案(设置将会保留)。 - JamesQMurphy
我通过为项目启用Windows身份验证以及匿名身份验证来解决了这个问题。希望能对某些人有所帮助。 - Shadi Alnamrouti

134
在Windows 10上,我必须在Internet Information Services下安装ASP.NET 3.5和ASP.NET 4.6(其他框会自动选中)。

enter image description here


这是我开始解决DNN作为应用程序而非虚拟目录的初始解决方案,采用“经典”appPool设置。现在我可以在IIS中运行PHP和ASPX应用程序。感谢您点燃了火苗。 - klewis
1
非常感谢。我尝试了很多解决方案,但都没有成功,然后我向下滚动到这里,尝试了您建议的解决方案,它对我起作用了。干得好 #joshcomley - nativegrip
3
这就是为什么你需要阅读所有建议的答案!谢谢Josh! - Conor Gallagher
1
谢谢!我在配置新服务器时遇到了一个无用的“HTTP错误500”消息。在日志文件中,我还看到了一个sc-substatus为19和sc-win32-status为33的状态码。添加这些开发功能解决了我的问题。 - Bob Kaufman
那就是问题,谢谢! - smedasn
谢谢!在Win Server 2012上,我需要安装.NET 4.5和ASP 4.5。 - mohsenof

81

最终我解决了我的问题。ASP.NET帐户没有出现在IIS管理器中,是因为我没有在IIS中勾选它的复选框。若要在Windows 7上执行此操作,请按以下步骤进行:

  1. 打开控制面板
  2. 点击“程序”链接(不是卸载的程序)
  3. 点击“打开或关闭Windows功能”链接
  4. 在弹出窗口中找到“Internet信息服务IIS”,并展开其节点
  5. 展开“万维网服务”节点
  6. 展开“应用程序开发功能”节点
  7. 勾选“ASP.NET”的复选框
  8. 然后点击确定按钮

现在您将在IIS管理器中看到Asp.net帐户,并且默认情况下您会看到IIS帐户。现在,您应该将ASP.NET网站从“我的文档”移动到IIS可以访问它的另一个位置(在计算机的任何分区)。现在从IIS管理器中浏览您的网站,它应该可以正常工作。


这对我完全奏效了!谢谢!我的问题是ASP、ASP.NET 3.5和ASP.NET 4.5没有启用。所以我检查/启用了它们,现在可以工作了,谢谢! - doncadavona

69

在我们不得不更改域管理员密码后,我们遇到了这个错误。

在尝试了许多设置后,我最终发现,在以下路径中的应用程序中,它被设置为专门使用域管理员帐户而不是通过身份验证 (谁知道为什么)。

IIS管理器 ->基本设置->连接


问题已经解决了(原因是设置为一个我们已禁用的用户运行,所以我们切换回了透传)。 - Josh
2
我知道这个答案很旧,但它也解决了我的问题。 - smoothgrips

20

您需要完成一个步骤:

run->cmd

run "c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i"

就是这样了


2
以管理员身份运行此命令。 - user2819666
1
在Windows 10上,它会给出以下错误: 此选项不受操作系统版本支持。管理员应使用“打开/关闭Windows功能”对话框、服务器管理器管理工具或dism.exe命令行工具安装/卸载带有IIS8的ASP.NET 4.5。有关更多详细信息,请参见http://go.microsoft.com/fwlink/?LinkID=216771。 已完成安装ASP.NET(4.0.30319.0),而不更改现有Web应用程序以使用此版本的ASP.Net。 - Shridhar R Kulkarni
3
如果您能对这个命令进行一些解释,那就更好了。 - eRaisedToX
1
不,那不是它。 - hyankov

16

今天我遇到了这个问题并解决了它。有人在IIS中设置了"默认网站"的"路径凭据"以作为特定用户运行。由于密码过期或例行更改,该用户更改了其密码。通过基本设置选项将"默认网站"连接为"应用程序用户",可以为我解决此问题。


这就是我的问题了。谢谢!我的路径凭据已设置到我的帐户中,但今晚早些时候我输错了密码,被锁定了15分钟。重新设置我的路径凭据用户名/密码解决了问题。嗯,既然我的帐户已经解锁,我想如果我只是重启服务,那也可能会解决问题。总之,谢谢! - Patrick Karcher
现在是2015年2月,IIS错误仍然像往常一样令人困惑。谢谢! - Warren P

14
您可能需要更改您的NT密码。

打开IIS -> 右键单击您的应用程序 -> 管理应用程序 -> 高级设置 -> 物理路径凭据。

祝好运。

11

对我来说,在“添加/删除Windows功能”中的.Net功能下,我需要启用 Http激活


这节省了我几个小时的时间。 - Jivan Bhandari

10
在我的情况下,这个错误出现在更改文件夹的解决方案后。
我通过进入项目属性并重新创建虚拟目录来解决这个问题。
右键单击项目> 属性> Web> 在服务器部分下单击“创建虚拟目录”。
它会显示一个消息,表示虚拟目录已在另一个位置创建,并且将更改它。

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