http错误503服务不可用。应用程序池在访问网站时停止


167

关于此的帖子很多,到目前为止,我已经尝试了很多东西。但无济于事。我自己基本上是Winforms开发人员,几天前我的公司开始采取Web措施时就开始从事此Web工作。

我有一个ASP.Net项目,我想将其托管在本地IIS上。在Project properties -> Web设置中,我选择了Use Local IIS Server,并将网址设为localhost/MyApp。我尝试在我的Firefox浏览器上访问它,并收到以下错误消息:HTTP Error 503. The service is unavailable.

以前,我还有很多其他错误,我一一修复了所有错误。但被这一击中。这些是我项目中的设置

  1. 将应用程序池设置为ASP.Net v4.0 Classic
  2. 应用程序池 Enable 32 bit Application属性为true
  3. 应用程序池已启动
  4. 将项目构建属性设置Any CPU为目标框架

但我想提一个奇怪的行为。以下是我面临的问题

  1. 应用程序池已启动
  2. 我尝试访问我的本地网站(通过提供url作为localhost/MyApp
  3. 我收到错误为 HTTP Error 503. The service is unavailable
  4. 应用程序池已停止

我已经看到以下链接,并且已经尝试过。对于上述行为,我到达了这里。根据此链接,计算机名称中不应包含.该名称。.我的计算机名称中没有任何名称,但确实有-。我的域名也包含.在其中。而且,由于我的办公室笔记本电脑和我们的TFS设置已绑定到我们的域名和计算机名称,因此我无法更改这些设置。

谁能帮助我了解发生了什么事?请指导我。谢谢。

编辑

我在中有以下代码Global.asaxApplication_BeginRequest同一文件中的方法为空。

protected override void Application_Start(object sender, EventArgs e)
{
    base.Application_Start(sender, e);
    String _path = String.Concat(System.AppDomain.CurrentDomain.RelativeSearchPath, ";",
                                         System.Environment.GetEnvironmentVariable("PATH"));
    System.Environment.SetEnvironmentVariable("PATH", _path, EnvironmentVariableTarget.Process);
    MyAppLog.Initialize();
    MyAppLog.WriteMessage("Application Started");
}

更新资料

根据评论中的建议,我可以从Cassini运行该网站。


您的Global.asax中是否有任何在应用程序启动时运行的代码?有什么可能陷入循环吗?您已启用,Enable 32 bit Application但您是否使用任何仅32位DLL?
CodingIntrigue

在Cassini中运行它会发生什么?
西蒙·怀特海德

@RGraham:我将项目构建属性设置为Any CPU。因此,我认为使用过的dll应该不是问题。请查看对Global.asax代码的修改。谢谢
桑迪

@SimonWhitehead:不知道卡西尼号是什么。我现在从cassinidev.codeplex.com下载了它。我可以在下载的文件中看到一些dll和exe。您能帮我怎么用吗?同时,我将尝试从互联网上阅读此问题。
桑迪

@SimonWhitehead:我可以从Cassini运行网站。
桑迪

Answers:


315

可能发生这种情况的一个可能原因是,IIS中的应用程序池配置为在某个自定义帐户下运行,并且该帐户不存在或提供了错误的密码,或者更改了密码。查看IIS使用的帐户在应用程序池中的高级属性。

此外,事件日志可能包含有关为什么应用程序池在第一个请求后立即停止的更多信息。

在此处输入图片说明


38
就我而言,这就是问题所在。我更改了Windows密码,并且Windows 8.1的本地IIS停止工作。我不得不在多个地方更新每个项目。在IIS 8中,我必须通过右键单击该池并单击“高级设置->流程模型->身份”来更新应用程序池中的凭据。然后,我不得不通过转到“站点-> MySITE->高级设置->物理路径凭据”来更新站点本身
teynon 2014年

4
即使该帐户存在且密码正确,也可能已被禁用;这将导致相同的症状。
沃尔夫冈·2015年

2
是的,这就是解决方案。我的帐户密码经常更改。我忘记在“高级设置”中输入新密码
mihkov

2
检查事件日志是一种方法,上次我一直在这些问题上为我提供帮助,上次我检查事件日志时,发现在iis中加载rewrite.dll失败,我去了控制面板中的程序和功能,修复了安装,一切恢复正常。
Amr Elgarhy

3
我们最近更改了密码。这就是解决方案。其他用户,请参见此处的屏幕截图:i.imgur.com/rp8bnGy.png
AskYous

43

好的,对于一种特定情况,我有另一种解决方案:如果您使用WINDOWS 10,并且您最近对其进行了更新(使用“周年更新”软件包),则需要执行以下步骤:

  1. 检查您的Windows Event Viewer-按Win + R并键入:eventvwr,然后按Enter。
  2. 在左侧 Windows Event Viewer单击Windows Logs-> Application
  3. 现在,您需要IIS-W3SVC-WP在中间窗口中找到一些源代码错误。
  4. 可能您会看到类似以下的消息:

无法加载模块DLL >> path-to-DLL <<。数据是错误的。

  1. 你必须去Control Panel->Program and Features然后根据无法加载的dll来修复另一个模块:
    • rewrite.dll-找到IIS URL重写模块2,点击Change- >Repair
    • aspnetcore.dll-找到的Microsoft .NET核心1.0.0 - 2015年VS工具...,然后点击Change- >Repair
  2. 重启你的电脑。

这个答案帮助我解决了类似的问题。通过删除Core 2.2修复了“服务不可用”错误(仅修复无法解决)。投票。
罗伯托

2
接受的答案没有帮助。做到了。谢谢!
魔鬼的代言人

1
很好的答案,日志向我显示模块DLL C:\ Windows \ System32 \ inetsrv \ compdyn.dll无法加载。数据是错误的。所以我安装了动态内容压缩
Mehdi Daustany

对我而言,它是:The Module DLL C:\Windows\System32\inetsrv\iis_ssi.dll failed to load. The data is the error.因此,我根据此建议
David Refoua,

14

对于我来说,我的登录密码已更改,而应用程序池仍使用旧密码。因此,只需单击应用程序池的“高级设置”,然后重置“身份”即可。


我同意这种情况经常发生
Sandy

11

我遇到了同样的问题,并使用事件日志对其进行了调试。首先它说:“找不到源Microsoft-Windows-WAS的事件ID 5059的描述”。

然后我使用打开/关闭窗口功能打开WAS。然后我在eventvwr“找不到Microsoft-Windows-DistributedCOM”中看到了这一点。

最后,我放弃并删除了“应用程序池”(用于停止访问网站),然后再次创建它。这样就解决了问题。


如果你碰巧有一堆网站引用相同的应用程序池,你可以使用APPCMD批量更新:他们 appcmd list site /xml | appcmd set site /[path='/'].applicationPool:YOURNEWPOOL /in
drzaus

也为我工作。从2008年升级到2012年,应用程序池并不完全令人满意。
安东尼·霍恩,2016年

6

对于任何使用Windows 10并将其更新为周年更新的人,请检查此链接,它对我有帮助:

https://orcharddojo.net/blog/troubleshooting-iis-apppool-crashes-status-503-after-windows-10-anniversary-update

万一链接断开:如果您的事件日志显示aspnetcore.dll,rewrite.dll(通常,但也可能是其他)无法加载,则必须修复丢失的项。

到目前为止,这是我们遇到的两个具体问题以及解决方法,但是您可能会遇到完全不同的问题:

"C:\WINDOWS\system32\inetsrv\rewrite.dll" (reference)
    Go to "Programs and Features" (Win+X, F) and repair "IIS URL Rewrite Module 2".
"C:\WINDOWS\system32\inetsrv\aspnetcore.dll" (reference)
    Go to "Programs and Features" (Win+X, F) and repair "Microsoft .NET Core 1.0.0 - VS 2015 Tooling ...".

6

大多数时候,它是由于AppPool设置而发生的。

检查以下内容以解决此问题

  1. 检查Apppool服务是否正在运行。
  2. 检查AppPool的身份。
  3. 如果新密码已更改为该身份,请输入。

下图显示了IIS中的这些设置

在此处输入图片说明


5

如果您具有McAfee HIPS,并且在事件查看器应用程序日志中看到以下错误:

无法加载模块DLL C:\ Windows \ System32 \ inetsrv \ HipIISEngineStub.dll。
数据是错误的。

然后以下内容解决了我的问题:https : //kc.mcafee.com/corporate/index?page=content&id=KB72677&actp=LIST

从页面引用:

  1. 单击开始,运行,键入资源管理器,然后单击确定。
  2. 导航至:%windir%\ system32 \ inetsrv \ config
  3. 以管理员身份打开文件applicationHost.config,以在记事本中进行编辑。
  4. 编辑<globalModules>部分,并删除以下行:
    <add name =“ MfeEngine” image =“%windir%\ System32 \ inetsrv \ HipIISEngineStub.dll” />

  5. 编辑<modules>部分并删除以下行:
    <add name =“ MfeEngine” />

  6. 完成编辑applicationHost.config文件后,保存文件,然后使用iisreset或重新启动系统来重新启动IIS服务器。

5

就我而言,我检查了事件日志,发现错误是“无法读取配置文件”,试图从文件“ \\?\”,行号“ 0”中读​​取配置数据。数据字段包含错误代码。

错误代码为2307。

我删除了C:\ inetpub \ temp \ appPools中的所有文件,然后重新启动了iis。它解决了这个问题。


4

我有一个类似的问题。通过将用户添加到“本地安全策略”>“本地策略”>“用户权限分配”下的“作为批处理登录”策略来解决此问题。



3

如果您可以在Visual Studio调试器中运行网站,则可能可以查看应用程序池在代码中崩溃的位置。就我而言,这是一个无限次递归调用的函数,这导致了堆栈溢出。注意:Windows事件日志和IIS日志对诊断问题没有帮助。


3

我在iis 8.5上遇到了同样的问题。在Windows日志->应用程序下搜索eventViewer之后,我意识到我对.net框架的machine.config文件存在权限错误,该文件位于“ C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ machine.config”。授予IIS_IUSRS权限可以解决我的问题(右键单击文件->属性->安全性->编辑->添加-> IIS_IUSRS)


3

我遇到此错误,在我的情况下,原因是一段时间前我修改了用户密码,直到重新启动应用程序池后才出现503错误。

因此,我修复了在“应用程序池” /“高级设置” /“身份” /“设置” /“设置...” /“密码” /“确认密码”中设置新密码的问题。


2

我遇到了类似的问题,每当对其发出Web请求时,我的所有应用程序池都将停止。尽管我在事件查看器中遇到以下错误:

应用程序池“ appPoolName”的工作进程遇到错误“配置文件格式不正确的XML”,试图从文件“ \?\ C:\ inetpub \ temp \ apppools \ appPoolName \ appPoolName.config”中读取配置数据数字“ 3”。数据字段包含错误代码。

告诉我在以下位置application.config中存在错误:

C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config

在我的场景中,我在部署时编辑了web.config并使用了IIS明显不喜欢的元素,applicationHost.config抓取了web.config并插入了这个错误的元素,直到我手动将其删除后才能解决


“ IIS显然不喜欢某个元素”您提到的特定元素是什么?
阿希尔,

我在4年前发表了这篇文章。我不确定web.config中包含什么元素,但​​这不是重点。OP所描述的应用程序池问题正在我身上发生,我正在找回这些无用的错误消息。造成上述情况的原因是,我在网站的web.config中输入了错误的内容。(也许是拼写错误,语法错误或IIS无法识别的部分)
ShaneC

2

除了Orhan的答案此链接概述的步骤外,您可能还需要通过转到IIS管理器>服务器根>模块>配置本机模块来删除本机模块。选择MfeEngine,然后选择删除。


2

将“托管管道模式”从“经典”更改为“集成”对我有用。可以在“应用程序池”->“基本设置”中进行更改


这修复了我的问题,该问题在将以下Windows KB应用于运行IIS 7.5的Windows Server 2008 R2后出现。### 2019-07适用于Windows 7和Server 2008 R2的.NET Framework 3.5.1、4.5.2、4.6、4.6.1、4.6.2、4.7、4.7.1、4.7.2、4.8的安全和质量汇总for x64(KB4507420)更多信息: support.microsoft.com/kb/4507420 ###
phanf

1

只是要添加到这些Anniversary Update问题(感谢Microsoft),如果您丢失的文件是cgi.dll,即您Event Viewer

The Module DLL C:\WINDOWS\System32\inetsrv\cgi.dll failed to load.  The data is the error.

然后解决此问题:

  1. IIS Manager
  2. 选择最上方的行 Connections面板中(通常是您的PC名称)
  3. 在右侧面板的最底下Management,您应该拥有Web Platform Installer
  4. 加载后,选择 Products
  5. 在搜索中输入cgi然后点击<Enter>
  6. 选择IIS: CGI然后单击Add右边,最后Install底部
  7. 安装后,它会强制您重新启动PC,并且应该已修复。

1
我的是我卸载然后重新安装的“ URL Rewrite”。因为我收到此错误:“模块DLL C:\ WINDOWS \ system32 \ inetsrv \ rewrite.dll无法加载。数据是错误。”
Gwasshoppa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.