ChatGPT解决这个技术问题 Extra ChatGPT

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

有很多关于这个的帖子,我现在已经尝试了很多东西。但无济于事。我自己基本上是一个 Winforms 开发人员,几天前我的公司正在采取 Web 计划时开始研究这个 Web 的东西。

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

以前我遇到了许多其他错误,我一一修复了它们。但是被这个打动了。这些是我在项目中的设置

应用程序池设置为 ASP.Net v4.0 经典应用程序池启用 32 位应用程序属性为真应用程序池已启动项目构建属性设置为目标框架的任何 CPU

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

应用程序池已启动 我尝试访问我的本地网站(通过将 url 提供为 localhost/MyApp)我收到错误为 HTTP 错误 503。服务不可用 应用程序池已停止

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

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

编辑

我在 Global.asax 中有以下代码。 Application_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?
当你在 Cassini 中运行它时会发生什么?
@RGraham:我将项目构建属性设置为 Any CPU。所以我认为用过的dll应该不是问题。请参阅 Global.asax 代码的编辑。谢谢
@SimonWhitehead:不知道卡西尼是什么。我现在从 cassinidev.codeplex.com 下载了它。我可以在下载的文件中看到一些 dll 和 exe。你能帮我如何使用它吗?同时,我将尝试从互联网资源中阅读有关此问题的信息。
@SimonWhitehead:我可以从 Cassini 运行网站。

M
Matthew Lock

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

此外,事件日志可能包含有关应用程序池在第一次请求时立即停止的原因的更多信息。

https://i.stack.imgur.com/Eb0th.png


就我而言,这就是问题所在。我更改了我的 Windows 密码,并且我的 Windows 8.1 本地 IIS 停止工作。我不得不在多个地方更新每个项目。在 IIS 8 中,我必须通过右键单击池并单击“高级设置 -> 进程模型 -> 身份”来更新应用程序池中的凭据。然后,我必须通过转到“站点 -> MySITE -> 高级设置 -> 物理路径凭据”来更新站点本身
即使账户存在且密码正确,也可能已被禁用;这将导致相同的症状。
是的,这就是解决方案。我的帐户密码经常更改。我忘了在“高级设置”中输入新密码
检查事件日志是要走的路,总是帮助我解决这些问题,上次我检查事件日志时发现在iis中加载rewrite.dll失败,我去了控制面板中的程序和功能,修复了安装,一切恢复正常。
我们最近更改了密码。这就是解决方案。对于其他人,请在此处查看屏幕截图:i.imgur.com/rp8bnGy.png
1
1_bug

好的,对于一个特定情况,我有另一种解决方案:如果您使用 WINDOWS 10,并且您最近更新了它(使用周年更新包),您需要按照以下步骤操作:

检查您的 Windows 事件查看器 - 按 Win+R 并键入:eventvwr,然后按 ENTER。在 Windows 事件查看器的左侧,单击 Windows 日志 -> 应用程序。现在您需要在中间窗口中找到源 IIS-W3SVC-WP 的一些错误。可能您会看到如下消息:

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

您必须转到控制面板-> 程序和功能,根据无法加载的 dll,您需要修复另一个模块:对于 rewrite.dll - 找到 IIS URL 重写模块 2,然后单击更改-> 修复 aspnetcore.dll - 查找Microsoft .NET Core 1.0.0 - VS 2015 Tooling ...并单击更改->修复。重启你的电脑。


这个答案帮助我解决了类似的问题。通过删除 Core 2.2 修复了“服务不可用”错误(单独修复无法修复)。赞成票。
接受的答案没有帮助。这做到了。谢谢!
很好的答案,日志显示模块 DLL C:\Windows\System32\inetsrv\compdyn.dll 加载失败。数据是错误的。所以我安装了动态内容压缩
对我来说,它是:The Module DLL C:\Windows\System32\inetsrv\iis_ssi.dll failed to load. The data is the error. 所以我安装了 Select Server Side Includes per this suggestion
接受的答案也对我没有帮助,但是这个答案对我有帮助,但是,我只卸载了 IIS URL Rewrite Module 2 并且它起作用了......我没有修复它或重新安装它。
D
David

对于我的情况,我的登录密码已更改,而应用程序池仍使用旧密码。因此,只需单击应用程序池的“高级设置”并重置您的“身份”。


我同意这种情况经常发生
T
Tarun

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

然后我使用 turn windows features on/off 打开 WAS。然后我在eventvwr“找不到Microsoft-Windows-DistributedCOM”中看到了这个。

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


如果您碰巧有一堆网站引用同一个应用程序池,您可以使用 appcmdbatch-update它们:appcmd list site /xml | appcmd set site /[path='/'].applicationPool:YOURNEWPOOL /in
也为我工作。从 2008 年升级到 2012 年,应用程序池并不完全满意。
M
Matthew Lock

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

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

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

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

https://i.stack.imgur.com/y9U8O.png


Z
Zoran P.

对于使用 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 ...".

O
Orhan Celik

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

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

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

从页面引用:

单击开始,运行,键入资源管理器,然后单击确定。导航到:%windir%\system32\inetsrv\config 以管理员身份打开文件 applicationHost.config 以便在记事本中进行编辑。编辑 部分并删除以下行: 编辑 部分并删除以下行: 编辑完 applicationHost.config 文件后,保存文件,然后使用 iisreset 或重新启动系统重新启动 IIS 服务器。


A
Abhishek Agrawal

在我的情况下,我检查了事件日志,发现错误是无法读取配置文件'试图从文件'\\?\',行号'0'读取配置数据。数据字段包含错误代码。

错误代码为 2307。

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


t
thd

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


S
Swapnil Kale

当我第一次添加服务并为其创建应用程序池时。我从命令提示符处执行了“iisreset”,它起作用了。


M
Matthew Lock

我遇到了这个错误,就我而言,原因是前一段时间我修改了用户密码,直到我重新启动应用程序池才出现 503 错误。

所以我修复了它在应用程序池/高级设置/身份/[...]/设置.../密码/确认密码上设置新密码


h
humbads

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


D
Dror T

我对 iis 8.5 有同样的问题。在 windows Logs->applications 下搜索 eventViewer 后,我意识到我对位于 "C:\Windows\Microsoft.NET\Framework64\v4.0.30319 的 .net 框架的 machine.config 文件有权限错误\Config\machine.config”。授予它 IIS_IUSRS 的权限解决了我的问题(右键单击文件--> 属性--> 安全性--> 编辑--> 添加--> IIS_IUSRS)


S
Serj Sagan

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

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

然后解决这个问题:

转到 IIS 管理器 选择 Connections 面板中的最上面一行(通常是您的 PC 名称) 在右侧面板的最底部,在 Management 下,您应该有 Web Platform Installer 加载后,在 cgi 中的搜索类型中选择 Products 然后点击 选择 IIS: CGI 然后点击右侧的添加,最后点击底部的安装 安装后它应该会强制你重新启动你的电脑,你应该得到修复。


我的是我卸载然后重新安装的“Url Rewrite”。因为我收到了这个错误:“模块 DLL C:\WINDOWS\system32\inetsrv\rewrite.dll 加载失败。数据是错误。”
我想知道为什么需要 CGI。我想我必须深入研究这一点。我从我的配置中排除了它,因为我想强化我的 IIS。
这也适用于我,但首先我必须实际安装位于面板右侧的 Web 平台安装程序,然后在您所说的位置显示“Web 平台安装程序”之后。
h
hussains8

要解决问题,请按照我遇到相同问题的步骤操作,以下解决方案对我有用

1- 将文件夹“C:\inetpub\temp”的完全权限或至少读取访问权限授予 IIS_IUSRS

2- 还检查授予文件夹“C:\inetpub\wwwroot”的用户 IIS_IUSRS 的相同权限。

希望这个解决方案有效!


S
ShaneC

我遇到了类似的问题,每当向它们发出 Web 请求时,我的所有应用程序池都会停止。虽然我在事件查看器中收到以下错误:

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

这告诉我 application.config 中有错误:

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

在我的场景中,我在部署时使用 IIS 明显不喜欢的元素编辑了 web.config,applicationHost.config 刮掉了 web.config 并插入了这个坏元素,直到我手动删除它才能解决


“一个元素 IIS 显然不喜欢”你提到的那个特定元素是什么?
我在 4 年前发表了这篇文章。我不确定 web.config 中有什么元素,但这不是重点。 OP 描述的应用程序池问题发生在我身上,我收到了这些无用的错误消息。上述原因是我在网站的 web.config 中输入了不正确的条目。 (可能存在拼写错误或语法错误或 IIS 无法识别为有效的部分)
d
dantheman

除了 this link from Orhan's answer 中列出的步骤之外,您可能还需要通过转到 IIS 管理器来删除本机模块 >服务器根目录 >模块 >配置本机模块。选择 MfeEngine,然后选择删除。


M
MartinS

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


这解决了我在将以下 Windows KB 应用到运行 IIS 7.5 的 Windows Server 2008 R2 后出现的问题。 ### 适用于 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 的安全和质量汇总对于 x64 (KB4507420) 更多信息:support.microsoft.com/kb/4507420 ###
s
souravds

https://i.stack.imgur.com/CfcHK.png


A
AlexLaforge

在我们设置全新的 Classic ASP 网站时,我们在 Windows Server 2019 上遇到了此类 503 错误。

实际上,在 App Pool 中,将“.NET CLR Version”设置为“No Managed code”会导致 App Pool 在启动后 2 秒停止,从而在 Windows 事件日志中生成 WAS 5002 和 5021 错误。

解决方案是放置“v4.0”,即使没有使用 .NET。


E
EvilDr

我参加聚会迟到了,但没有列出对我有用的解决方案。

我的解决方案是简单地删除 IIS 中的网站和应用程序池,然后重新创建它们。

这是因为最初我先创建了站点/文件夹,然后安装了 dotnet 核心运行时。由于某种原因,这无法让网站启动。

重新创建后,该网站无需任何其他建议即可开始使用。


H
Hakan Fıstık

这个答案会帮助你吗?如果您在 EventViewer 中收到以下消息

模块 DLL aspnetcorev2.dll 加载失败。数据是错误的。

那么是的,这将解决您的问题

检查您的事件查看器

按 Win+R 并键入:eventvwr,然后按 ENTER。在 Windows 事件查看器的左侧,单击 Windows 日志 -> 应用程序。现在您需要在中间窗口中找到源 IIS-W3SVC-WP 的一些错误。

安装 Microsoft Visual C++ 2015 Redistributable 86x 和 64X(两者)

Source


N
Namig Hajiyev

在我的情况下,Windows 事件查看器 -> Windows 日志 -> 应用程序中显示的错误消息是“模块 DLL C:\Windows\system32\inetsrv\rewrite.dll 加载失败。数据是错误。”通过安装程序卸载重写模块解决了这个问题。我没有使用任何重写规则,所以我卸载了重写模块。重新安装模块也可能有助于解决问题。


R
Robharrisaz

我刚刚在一些运行 Windows 2008 R2 的旧版服务器上遇到了这个问题。 32 位应用程序会导致应用程序池崩溃并返回 503 而不会影响应用程序代码。该问题似乎与 .net 核心模块错误地尝试加载模块的 64 位版本有关,即使有问题的 32 位应用程序不是 .net 核心应用程序。

在确定要加载哪个模块来为请求提供服务并尝试将 64 位版本加载到 32 位进程中时,IIS 似乎仍然加载该模块是不行的。

最后,我不得不从服务器上卸载所有版本的 .net core 并重新安装最新的(此时 3.1.15-我们还没有使用 5)。之后,我的 32 位应用程序和 .net 核心应用程序可以在同一台服务器上共存。

经过几天的努力,这是帮助我解决这个问题的博客文章。希望它可以帮助某人。 Blog post with the solution


N
Nemanja Andric

授予文件夹“C:\inetpub”的全部权利 为我工作!