189

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

我有一个 ASP.Net 项目,我想将它托管在本地 IIS 上。在Project properties -> Web设置中,我选择Use Local IIS Server并给出了一个 url 作为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为 Target 框架设置的项目构建属性

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

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

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

4

24 回答 24

347

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

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

在此处输入图像描述

于 2013-10-29T09:44:36.527 回答
56

好的,对于一个特定情况,我有另一种解决方案:如果您使用 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 来修复另一个模块:
    • for rewrite.dll- 找到IIS URL Rewrite Module 2并点击Change->Repair
    • for aspnetcore.dll- 找到Microsoft .NET Core 1.0.0 - VS 2015 Tooling ...并单击Change-> Repair
  2. 重启你的电脑。
于 2016-10-25T08:39:02.333 回答
16

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

于 2014-12-17T15:03:19.157 回答
12

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

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

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

于 2013-12-30T11:32:27.783 回答
9

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

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

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

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

在此处输入图像描述

于 2016-09-28T13:53:20.770 回答
7

对于使用 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 ...".
于 2016-10-08T14:44:54.107 回答
6

如果您有 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 服务器。
于 2014-07-30T11:59:56.077 回答
6

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

错误代码为 2307。

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

于 2017-10-11T10:51:18.343 回答
5

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

于 2015-11-03T17:09:19.810 回答
5

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

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

于 2016-04-18T09:52:52.177 回答
5

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

于 2016-01-12T19:53:18.280 回答
4

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

于 2015-03-27T14:48:01.337 回答
4

我对 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)

于 2016-07-11T18:00:28.533 回答
4

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

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

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

希望这个解决方案有效!

于 2021-03-24T15:59:16.100 回答
4

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. 安装后它应该会强制你重新启动你的电脑,你应该得到修复。
于 2018-09-21T03:05:06.100 回答
3

我遇到了类似的问题,每当向它们发出 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 并插入了这个坏元素,直到我手动删除它才能解决

于 2014-12-15T14:57:35.090 回答
3

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

于 2019-01-10T08:53:57.497 回答
3

除了Orhan 的答案中此链接中概述的步骤之外,您可能还需要通过转到 IIS Manager > Server Root > Modules > Configure Native Modules 来删除本机模块。选择 MfeEngine,然后选择删除。

于 2016-01-27T19:47:53.727 回答
2

发生这种情况的一个可能原因是您的服务器计算机中没有足够的磁盘空间。您可以在事件查看器中找到更多信息。如果发生这种情况,只需停止 IIS,清理一些可用磁盘空间并重新启动 IIS,然后启动 App Poll。在此处输入图像描述

于 2020-11-07T13:28:31.457 回答
2

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

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

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

于 2022-02-08T14:13:14.057 回答
0

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

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

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


检查您的事件查看器

  1. 按 Win+R 并键入: eventvwr,然后按 ENTER。
  2. 在左侧Windows Event Viewer点击Windows Logs-> Application
  3. 现在您需要IIS-W3SVC-WP在中间窗口中找到一些错误源。

如果您收到上一条消息错误,则解决方案是:

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

资源

于 2020-07-23T09:51:07.557 回答
0

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

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

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

经过几天的努力,这是帮助我解决这个问题的博客文章。希望它可以帮助某人。 包含解决方案的博客文章

于 2021-05-25T19:53:19.883 回答
0

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

于 2020-11-19T15:13:55.487 回答
0

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

于 2021-09-10T20:31:39.407 回答