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

时间:2013-10-29 08:02:43

标签: c# asp.net iis iis-7 localhost

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

我有一个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. App Pool Enable 32 bit Application属性为true
  3. 应用程序池已启动
  4. 项目构建属性设置为目标框架的Any CPU
  5. 但我想提一个奇怪的行为。以下是我面临的事情

    1. 应用程序池已启动
    2. 我尝试访问我的本地网站(通过提供网址为localhost/MyApp
    3. 我收到错误为HTTP Error 503. The service is unavailable
    4. 应用程序池已停止
    5. 我见过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");
      }
      

      更新

      根据评论中的建议,我可以从卡西尼那里运行网站。

22 个答案:

答案 0 :(得分:267)

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

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

enter image description here

答案 1 :(得分:30)

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

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

    模块DLL>>路径到DLL<<无法加载。数据是错误。

    1. 您必须转到Control Panel - > Program and Features并且根据无法加载的dll,您需要修复另一个模块:
      • for rewrite.dll - 找到 IIS网址重写模块2 ,然后点击Change - > Repair
      • for aspnetcore.dll - 找到 Microsoft .NET Core 1.0.0 - VS 2015工具... ,然后点击Change - > Repair
    2. 重新启动计算机。

答案 2 :(得分:14)

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

答案 3 :(得分:9)

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

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

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

答案 4 :(得分:6)

大部分时间,由于AppPool设置而发生。

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

  1. 检查Apppool服务是否正在运行。
  2. 检查AppPool的身份。
  3. 如果新密码已更改为该身份,请输入新密码。
  4. 以下图像显示IIS中的这些设置

    enter image description here

答案 5 :(得分:6)

对于使用Windows 10来到这里并将其更新为周年纪念更新的任何人,请查看此链接,它帮助了我:

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

如果链接出现故障: 如果您的事件日志显示aspnetcore.dll,rewrite.dll(最常见,但也可能是其他人)无法加载,您必须修复丢失的项目。

以下是我们迄今为止遇到的两个具体问题以及如何解决这些问题,但您可能遇到完全不同的问题:

"********"

答案 6 :(得分:5)

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

  

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

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

从页面引用:

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

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

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

答案 7 :(得分:4)

当我第一次添加服务并为其创建应用程序池时。 我做了" iisreset"从命令提示符,它工作。

答案 8 :(得分:4)

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

错误代码是2307。

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

答案 9 :(得分:3)

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

答案 10 :(得分:3)

我遇到了这个错误,在我的情况下,原因是前段时间我修改了用户密码,并且在我重新启动应用程序池之前没有出现503错误。

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

上设置新密码

答案 11 :(得分:3)

我和iis 8.5有同样的问题。在windows Logs - >应用程序下搜索eventViewer后,我意识到我的.net框架的machine.config文件有一个权限错误,位于" C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \配置\ machine.config中&#34 ;. 授予IIS_IUSRS权限解决了我的问题(右键单击文件 - >属性 - >安全性 - >编辑 - >添加 - > IIS_IUSRS)

答案 12 :(得分:3)

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

答案 13 :(得分:2)

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

答案 14 :(得分:2)

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

  

应用程序池的工作进程' appPoolName'遇到了   错误'配置文件格式不正确XML'试着看   来自文件的配置数据   ' \?\ C:\ inetpub \ temp \ apppools \ appPoolName \ appPoolName.config',line   号码' 3'。数据字段包含错误代码。

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

  

C:\ Windows \ System32下\ INETSRV \设置\的applicationHost.config

在我的场景中,我编辑了部署的web.config,其中一个元素IIS显然不喜欢,applicationHost.config抓取了web.config并插入了这个坏元素,直到我手动删除它才会解决

答案 15 :(得分:1)

如果丢失的文件是Anniversary Update,即cgi.dll

,只需添加到这些Event Viewer问题中(感谢Microsoft)
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,并且应该已修复。

答案 16 :(得分:1)

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

答案 17 :(得分:1)

可能发生这种情况的一个可能原因是服务器计算机中没有足够的磁盘空间。您可以在事件查看器中找到更多信息。 如果发生这种情况,只需停止IIS,清理一些可用磁盘空间,然后重新启动IIS,然后启动应用程序轮询。 enter image description here

答案 18 :(得分:1)

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

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

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

希望这个解决方案有效!

答案 19 :(得分: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(两者)

Source

答案 20 :(得分:0)

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

答案 21 :(得分:0)

我刚刚在一些运行 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