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

HTTP错误503。业务不可用。

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

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

有人能告诉我怎么了吗?


当前回答

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

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

我的错误是“503 1 AppOffline DefaultPool”

解决方案

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

其他回答

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

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

netsh http show urlacl

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

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

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

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

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

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

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

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

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

在为这个临时文件夹的所有人添加了完全控制后,我重新启动了Windows进程激活服务,一切都重新联机了。

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