HTTP错误503,服务不可用

一般来说,我对设置web服务器真的很陌生。我已经在Windows 8上安装了iis8,我正在尝试在本地建立一个小网站,同时进行一些开发。在IIS中,我选择添加站点,给出一个名称,指向我有index.html文件的位置(我尝试过不同的位置,最近在c: \ inetpub \ wwwroot \测试文件夹中),否则使用所有默认设置。但是,当我尝试浏览到localhost时,我得到

HTTP错误503。业务不可用。

我已经验证了池已经启动,并且我已经在目标文件夹上给了IIS_IUSRS完全控制

我到处搜索,但没有找到任何解决我的问题,在EventLog或C:\Windows\System32\LogFiles\HTTPERR文件夹中没有任何帮助

有人能告诉我怎么了吗?

976432 次浏览

您的域可能要求用于运行appool的帐户具有批量登录权限。在这种情况下,您将看到相同的错误消息。您可以通过查看事件查看器中的系统事件来判断是否存在这种情况。应该有一个事件,说明应用程序池使用的帐户有“错误的密码或没有批量登录权限”。

这就是为什么开发人员经常在他们的开发机器上使用IIS Express,因为它传递了批量登录权限问题。

首先在事件查看器中查找,在系统或应用程序日志下。

在我的案例中,问题是没有工作进程可以为应用程序池启动,因为它的配置文件无法读取-我已经包含了一个额外的'。在它的名字后面。

如果应用程序池在某些特定的用户身份下运行,则转到高级设置并再次更新用户名和密码,以确保它们是正确的。

我遇到了同样的问题,但这是与IIS中的实际站点设置有关的问题。

为您的站点/应用程序选择Advanced Settings...,然后查看Enabled Protocols值。无论出于什么原因,我的站点的值是空白的,并导致以下错误:

HTTP错误503。业务不可用。

修复方法是添加http并选择OK。随后,网站又恢复了正常运行。

检查应用程序各自的应用程序框架池-它可能被停止。如果是,启动后再检查。

如果您仍然遇到问题,还可以检查事件查看器以查找错误的原因,以便进行更多故障排除。

这可能是用户身份过时,特别是如果你尝试启动一个停止的应用程序池,而下一次请求再次失败。

在IIS中,进入服务器下的应用程序池,然后为您的网站找到正确的应用程序池,并单击它。在右侧的“高级设置”菜单中选择“身份”并修改,输入新用户和密码。再次单击应用程序池,并选择Recycle重新启动它。

您也可以尝试在“事件查看器”的“Windows日志、应用程序、详细信息”选项卡下查看错误消息。

这可能是因为连接到数据库的数量。我有这样的情况,所以,写了一个去构造函数和杀死db打开连接,它解决了。

在我的例子中,问题是DefaultAppPool。我更改了“加载用户配置文件”;变为假的,现在它起作用了。然而,我不知道这是否有副作用。

enter image description here

有关设置加载用户配置文件选项的进一步阅读:当我设置IIS池的LoadUserProfile时,到底发生了什么?

我遇到了同样的问题,发现这是由在C:\Users中创建用户配置文件的权限问题引起的。我给了ApplicationPoolIdentity C:\Users文件夹的完全权限,启动了站点,一切正常,配置文件必须已经正确创建,并且我的站点正常工作。然后我从ApplicationPoolIdentity中删除了对C:\Users的访问权。

站点不会使用ApplicationPoolIdentity在本地启动,仅当使用NetworkService时:"HTTP错误503。服务不可用。"

对我来说,DefaultAppPool无法启动,事件日志告诉我C:\Windows\System32\inetsrv\redirect.dll无法加载。

文件不见了。出现这种情况的原因是没有安装Windows特性“HTTP重定向”。检查该特性是否在Internet Information Services\World Wide Web Services\Common HTTP Features\HTTP Redirection下。如果您现在刚刚安装它,应该不需要重新启动。

我知道这是以不同的方式回答的,但在我的情况下,我注意到应用程序池在手动重启后自动停止。但是当我更改了几天前更改的帐户密码时,它工作得很好,没有任何其他更改。

检查事件查看器- Windows -应用程序。如果有一个由IIS-W3SVC-WP组成的红色错误行,并且消息类似模块DLL C:\Windows\system32\inetsrv\rewrite.dll加载失败。数据就是错误。,那么你错过了一些Windows安装功能。

在Windows Server 2012中,进入服务器管理器、添加角色和功能、Web服务器(IIS)并添加匹配的功能。通常,大多数应用程序开发部分都已安装。下面是一个完整的IIS特性及其相关DLL列表,以帮助诊断。

经过几次迭代之后,我在上面关于“重写。dll”的错误消息上结束。这导致直接下载和安装微软URL重写工具。最后,所有的网站都活了过来。

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

模块DLL C:\Windows\System32\inetsrv\ hipiisengineestu . DLL加载失败 数据就是错误。< / p >

然后这个McAfee.com上的解决方案解决了我的情况下的问题。

原文如下:

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

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

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

其他答案都可以。但就我而言,我使用的是一个Windows机器,它已经在运行一些旧的IIS、IISExpress或其他网站。发生的事情是url acl在系统中以某种方式保留。你可能想检查一下这个。

下面是转储所有URL acl的console命令:

netsh http show urlacl

检查这里返回的内容,如果有任何内容与您正在测试的url匹配,下面是删除一个url acl的命令(例如):

netsh http delete urlacl url=http://localhost:2018/

(小心注意你在这里所做的事情,以防它与原始问题无关)

我通过删除与我的应用程序目录在IIS匹配的URL预订解决了这个问题。我有一个类似的(绝对不是相同的)问题,概述在这篇文章:

a Not So Common Root Cause for 503服务不可用

或者如果当前的解决方案都不起作用,请在您的网站目录中查找名为app_offline.htm的文件。这基本上告诉IIS您的站点不可用,并显示此页面。

要修复它,要么删除它,要么将其重命名为app_offline.htm.bak

在我的例子中,我在向一位同事演示如何使用它来暂时阻止网站流量时添加了它,然后忘记了我在我的盒子上做了这个操作。叹息。

还要检查地址栏,确保页面在正确的位置。

可以返回此错误,而不是返回404(未找到Page)。在我的例子中,它是页面上一个没有包含子文件夹的坏链接。

这发生在我的内部网服务器上。在浏览了博客文章和Windows日志后,发现在2015年圣诞节前几天(与Windows更新有关?)我的网站应用程序池想在文件夹c: \ inetpub \ temp \ appPools中创建一个配置文件,但访问该文件夹受到限制。这将导致应用程序池被禁用。

在将完全控制添加到这个临时文件夹上的Everyone后,我重新启动Windows进程激活服务,一切又重新联机了。

如果我能更优雅一点,那么授予apppoool用户对文件夹的完全控制权就足够了,但我似乎一直不记得应用程序池名称和应用程序池用户是如何相互关联的……

在我的例子中,问题是另一个应用程序正在使用我绑定到我的网站的端口。

我通过从命令行中运行以下命令找到它,其中列出了所有监听端口和涉及的可执行文件:

netstat -b

如果最近安装或更新了。net框架和/或ASP.NET,也会发生这种情况。如果你不确定最近发生了什么,如果你所有的应用都使用ASP。NET版本4,您可以在管理员模式下在命令提示符中运行以下命令来尝试重置它们。

cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
aspnet_regiis -i

这确保安装或重新安装ASP。asp.net 4和更新现有的应用程序使用ASP。NET 4版本的应用程序池。它更新IIS元数据库中的IIS经典模式和集成模式处理程序以及脚本映射。它还重新创建了ASP。asp.net v4.0和ASP。NET v4.0经典应用程序池,并将.NET framework 4设置为DefaultAppPool和经典。NET应用程序池。

如果你有IIS URL重写安装它可以做到这一点。我在Windows 10更新后遇到了一些问题。

这个StackOverflow帖子帮助了我

Windows Control Panel > Programs and Features > IIS URL Rewrite Module 2 > Repair

在我的案例中,与域名相关联的应用程序池与与个别网站/应用程序相关联的应用程序池不匹配。我不知道这是怎么发生的,但一旦域名应用程序池被纠正,问题就解决了。

从Windows 7升级到Windows 10后,IIS Express 10.0也一样。 解决方法:进入IIS,启用所有禁用的网站,重新安装ASP。网络核心。< / p >

在IIS中,进入服务器下的应用程序池,然后为您的网站找到正确的应用程序池,并单击它。在右侧的“高级设置”菜单中,在“常规”下,使“启用32位应用程序”= true。

这在某种程度上对我有用!

我得到这个错误时,我安装Skype。因为我的网站使用端口80和Skype使用相同的端口也。

请参见

我在一个使用Kentico作为卫星CMS的. net MVC应用程序中得到了这个错误。问题是,我的应用程序所在的URL需要一个适当的许可。它基本上停止了应用程序,导致IIS只返回这个503 -服务不可用的消息。我最终在Kentico的事件日志中找到了错误细节(作为警告)。您可以创建一个新的许可证或在Kentico的客户端门户网站https://client.kentico.com/中查找许可证详细信息。

我们的服务器在周日下午耗尽了磁盘空间,导致应用程序突然失败并返回HTTP错误502。日志是空的,所以它必须是在IIS执行任何操作之前发生的事情。

快速查看事件查看器(WIN+R > eventvwr)暴露了问题。 enter image description here < / p >

将系统和应用程序窗口的输出过滤到WAS是个好主意,因为在WAS中可能会非常冗长。

应用程序依赖于另一个被禁用的应用程序。因此,请记住,如果应用程序的一个相关进程宕机,应用程序可能会间接宕机。我们只是重新启用了. net应用程序池,我们的其他应用程序又开始正常运行了。

在我们的例子中,没有记录任何内容(除了503的HTTP错误日志条目),但是IIS中web应用程序的Enabled Protocols值有一个拼写错误!不是http,而是https在协议之间有一个句号:http。https

我有同样的问题,因为服务器机器上没有足够的内存 实际上有1/ 16gb的可用内存,但是IIS在卸载几个未使用的应用程序(他们不拥有端口80)后自动开始正常工作

如果应用程序池在你启动后立即停止,你的事件日志显示:

应用程序池“APP_POOL_NAME”的工作进程发生故障 错误'无法读取配置文件'试图读取配置 来自文件“\?”\',行号'0'。数据字段包含

.错误代码

... 你可能会遇到一个在Windows 10秋季创建者更新和/或. net Framework v4.7.1中引入的错误。它可以通过以下变通步骤来解决,这些步骤从这个答案到相关问题无法读取配置文件'正在读取文件'\\?\<EMPTY>',行号'0'

  1. 转到安装IIS的驱动器,例如。C:\inetpub\temp\appPools\
  2. 删除与应用程序池同名的目录(或虚拟目录)。
  3. 重新回收/启动应用池。

我已经通过在dotnet GitHub回购上创建以下问题向微软报告了这个错误:安装4.7.1后,IIS appppool停止,提示“无法读取配置文件”

编辑

微软回应称,这是Windows秋季创建者更新设置过程中的一个已知问题,并记录在KB 4050891, Web应用程序返回HTTP错误503和WAS事件5189在Windows 10版本1709(秋季创建者更新)中。那篇文章提供了下面的变通程序,与上面的类似。但是,请注意,它将回收所有应用程序池,不管它们是否受到问题的影响。

  1. 使用“以管理员身份运行”打开Windows PowerShell窗口 李选择。< / >
  2. 执行以下命令:
    • Stop-Service -Force WAS
    • Remove-Item -Recurse -Force C:\inetpub\temp\appPools\*
    • Start-Service W3SVC
    • 李< / ul > < / >

对于我的案例,我的默认应用程序池处于脱机状态。

为了解决此问题,我检查了位于C:\Windows\System32\LogFile\HTTPERR.的IIS日志向下滚动到最新的错误日志,这将显示IIS的问题。

我的错误是“503 1 AppOffline defaultpool”;

解决方案

  • 打开IIS管理器
  • 单击应用程序池,这将列出您右边的所有应用程序池。
  • 检查托管api或站点的应用程序池上是否有停止标志。如果是,右键单击应用程序池并单击start。
  • 再次尝试从客户端访问您的服务

实际上,在我的情况下,https://localhost是工作的,但http://localhost给出了一个HTTP 503内部服务器错误。在IIS中更改默认网站的绑定,以使用主机名localhost而不是空主机名。

IIS站点绑定的HTTPtname用于http绑定

我将端口从80更改为8080,这就是为什么出现这个错误。我在搜索栏中写入localhost/,然后出现这个错误。我的问题是通过在搜索中写入localhost:8080/然后打开本地主机来解决的。

我看到这个错误后,安装url重写模块,我尝试从安装以前的版本: https://www.microsoft.com/en-us/download/details.aspx?id=7435 它修复了我的错误

当我在开发机器上清理我的IIS时,我遇到了这个问题,我不知何故为我实际开发web的子文件夹创建了一个虚拟文件夹,我无法清除,并产生冲突。

我必须用

C:\Windows\System32\inetsrv\appcmd.exe list vdir

然后逐个删除问题虚拟目录使用

C:\Windows\System32\inetsrv\appcmd.exe delete app /app.name:"Default Web Site"/{name of virtual directory}

enter image description here

对我来说,解决方案是将启用32位应用程序更改为False


没有一个答案对我有用。所以我想分享我在几个小时的研究后的发现。

继续从事件日志中看到这条消息:The Module DLL C:\Windows\system32\RpcProxy\RpcProxy.dll failed to load. The data is the error.原来dll是64位的,不能加载到32位进程中。

你也可以试试下面的方法。

右键单击网站和'基本设置…' 点击“连接为…” 点击Specific User并给出新的凭证。

现在应该可以了。

在我的情况下,由于公司政策,我不得不改变我的网络userPass。所以,你需要编辑你的appool: 单击应用程序池。选择您的池,“高级设置…”'转到'流程模型',点击'身份',然后点击'特定用户',并给出新的凭据
< p > [2021年7月-更新] 我已经尝试了上面所有的答案,但它不工作,然后我在程序和功能中重新安装IIS,它工作了

我知道所有设置都没了,但还能用。(请阅读原文)

  1. 按Windows + X
  2. 选择“App and features”;
  3. 选择“程序和功能”;
  4. 选择“打开或关闭Windows功能”;
  5. 取消勾选“互联网信息服务”;复选框
  6. 重启PC
  7. 重新安装(检查“Internet信息服务”;复选框)
  8. 然后测试新的!

或者你可以:打开“程序和功能”;appwizard .cpl"并按Enter键。