一般来说,我对设置 Web 服务器很陌生。我在 Windows 8 上安装了 IIS 8,我正在尝试在本地建立一个小站点,同时进行一些开发。在 IIS 中,我选择添加站点,命名,指向我有 index.html 文件的位置(我尝试了不同的位置,最新在 ac:\inetpub\wwwroot\test -folder 中),否则使用所有默认设置.但是,当我尝试浏览到 localhost 我得到
http错误503服务不可用。
我已验证池已启动,并且已对目标文件夹授予 IIS_IUSRS 完全控制权
我四处搜索,但没有找到任何可以解决我的问题的东西,并且在 EventLog 或 C:\Windows\System32\LogFiles\HTTPERR 文件夹中没有任何帮助
谁能告诉我怎么了?
可能是用户身份已过时,尤其是当您尝试启动已停止的应用程序池并且下一个请求再次失败时。
在 IIS 中,转到服务器下的应用程序池,然后为您的网站找到正确的应用程序池,然后单击它。在右侧的高级设置菜单上,选择身份并更改它并输入新用户和密码。再次单击您的应用程序池,然后选择回收以重新启动它。
您还可以尝试在事件查看器中的 Windows 日志、应用程序、详细信息选项卡下查看错误消息。
其他答案都很好。但就我而言,我正在使用一个 Windows 机器,它已经在运行一些旧的 IIS、IISExpress 或任何其他网站。发生的事情是在系统中以某种方式保留的 urls ACL。所以,你可能想检查一下。
这是转储所有 URL acl 的控制台命令:
netsh http show urlacl
检查此处返回的内容,如果有任何内容与您正在测试的 url 匹配,这里是删除一个 URL acl 的命令(例如):
netsh http delete urlacl url=http://localhost:2018/
(请注意仔细注意您在此处所做的操作,以防与原始问题无关)
netsh http delete sslcert ipport=127.0.0.1:443
删除 SSL 证书。我还必须运行:netsh http delete urlacl url=https://+:443/
就我而言,问题是 DefaultAppPool。我将“加载用户配置文件”更改为 false,现在它可以工作了。但是,我不知道这是否有副作用。
https://i.stack.imgur.com/n7e4i.png
进一步阅读设置加载用户配置文件选项:What exactly happens when I set LoadUserProfile of IIS pool?
检查您的应用程序各自的应用程序框架池 - 它可能会被停止。如果是,请启动它并再次检查。
如果您仍然遇到问题,您还可以查看事件查看器以查找该错误的原因,以便进行更多故障排除。
如果应用程序池在某些特定用户身份下运行,则转到高级设置并再次更新用户名和密码以确保它们正确。
如果应用程序池在您启动后立即停止并且您的事件日志显示:
应用程序池“APP_POOL_NAME”的工作进程遇到错误“无法读取配置文件”尝试从文件“\?\”读取配置数据,行号“0”。数据字段包含错误代码。
...您可能会遇到明显在 Windows 10 Fall Creators Update 和/或 .Net Framework v4.7.1 中引入的错误。它可以通过以下解决方法步骤解决,这些步骤从 this answer 到相关问题 Cannot read configuration file ' trying to read configuration data from file '\\?\<EMPTY>', line number '0'。
转到安装 IIS 的驱动器,例如。 C:\inetpub\temp\appPools\ 删除与您的应用程序池同名的目录(或虚拟目录)。再次回收/启动您的应用程序池。
我已通过在 dotnet GitHub 存储库上创建以下问题向 Microsoft 报告了此错误:After installing 4.7.1, IIS AppPool stops with "Cannot read configuration file"。
编辑
Microsoft 回应说这是 Fall Creators Update 的 Windows 设置过程中的一个已知问题,并记录在 KB 4050891, Web applications return HTTP Error 503 and WAS event 5189 on Windows 10 Version 1709 (Fall Creators Update) 中。该文章提供了以下解决方法过程,与上述类似。但是,请注意,无论它们是否受到问题的影响,它都会回收所有应用程序池。
使用“以管理员身份运行”选项打开 Windows PowerShell 窗口。运行以下命令: Stop-Service -Force WAS Remove-Item -Recurse -Force C:\inetpub\temp\appPools\* Start-Service W3SVC
首先查看系统或应用程序日志下的事件查看器。
就我而言,问题是无法为应用程序池启动任何工作进程,因为无法读取其配置文件 - 我包含了一个额外的“。”在其名称的末尾。
我通过删除与 IIS 中的应用程序目录匹配的 URL 保留解决了此问题。我遇到了与本文中概述的类似(绝对不一样)的问题:
A Not So Common Root Cause for 503 Service Unavailable
或者,如果当前的解决方案都不起作用,请在您网站的目录中查找名为 app_offline.htm
的文件。这基本上告诉 IIS 您的站点不可用并改为显示此页面。
要修复它,请将其删除或重命名为 app_offline.htm.bak
。
就我而言,我在向同事展示如何使用它来暂时阻止网站流量时添加了它,然后忘记了我在我的盒子上做了那个。叹。
您的域可能要求用于运行 AppPool 的帐户具有批量登录权限。在这种情况下,您将看到同样的错误消息。您可以通过查看事件查看器中的系统事件来判断是否是这种情况。应该有一个事件表明与应用程序池一起使用的帐户“密码错误或没有批量登录权限”。
这就是为什么开发人员经常在他们的开发机器上使用 IIS Express,因为它绕过了批量登录权限问题。
我遇到了同样的问题,但这是与 IIS
中的实际站点设置有关的问题。
为您的站点/应用程序选择 Advanced Settings...
,然后查看 Enabled Protocols
值。无论出于何种原因,我的网站的值都是空白的,并导致以下错误:
http错误503服务不可用。
解决方法是添加 http
并选择 OK
。然后该站点再次正常运行。
http, https
。谢谢!
htt4p
。不知道这是怎么发生的,但它是在我的团队无法管理的本地环境中。超级沮丧。
检查事件查看器 - Windows - 应用程序。如果 IIS-W3SVC-WP 出现红色错误行并且消息类似于模块 DLL C:\Windows\system32\inetsrv\rewrite.dll 加载失败。数据是错误的。那么您缺少一些 Windows 安装程序功能。
在 Windows Server 2012 中,转到服务器管理器、添加角色和功能、Web 服务器 (IIS) 并添加匹配功能。通常,大部分应用程序开发部分都已安装。这是有助于诊断的 IIS features and their associated DLL 的完整列表。
在经历了几次迭代之后,我结束了上面关于“rewrite.dll”的错误消息。这导致了direct download and install of Microsoft URL Rewrite tool。最后,所有网站都栩栩如生。
ReWrite
模块。正如您提到的,从 Here 安装后问题将得到解决
我们的服务器在周日下午用完了磁盘空间,导致应用程序突然失败并返回 HTTP 错误 502。日志是空的,所以它必须是在 IIS 甚至没有做任何事情之前发生的事情。
https://i.stack.imgur.com/KP9s0.png
将系统和应用程序窗口的输出过滤到 WAS 是一个好主意,因为它可能会变得非常冗长。
该应用程序依赖于另一个被禁用的应用程序。因此请记住,如果一个应用程序的依赖进程之一出现故障,它可能会间接停机。我们只是重新启用了 .NET 应用程序池,我们的其他应用程序又开始正常运行。
如果您安装了 IIS URL 重写,则可能与此有关。我在 Windows 10 更新后遇到了问题。
This StackOverflow post helped me.
转到 Windows Control Panel
> Programs and Features
> IIS URL Rewrite Module 2
> Repair
。
我在安装 url 重写模块后看到此错误我尝试从以下位置安装它的以前版本:https://www.microsoft.com/en-us/download/details.aspx?id=7435 它修复了我的错误
就我而言,问题是另一个应用程序正在使用我绑定到我的网站的端口。
我通过从命令行运行以下命令找到了它,该命令列出了所有侦听端口和所涉及的可执行文件:
netstat -b
如果您有 McAfee HIPS,并且在事件查看器应用程序日志中看到以下错误:
模块 DLL C:\Windows\System32\inetsrv\HipIISEngineStub.dll 无法加载。数据是错误的。
然后这个 workaround on McAfee.com 解决了我的问题。
从页面引用:
单击开始,运行,键入资源管理器,然后单击确定。导航到:%windir%\system32\inetsrv\config 以管理员身份打开文件 applicationHost.config 以便在记事本中进行编辑。编辑
实际上,在我的情况下,https://localhost 工作正常,但 http://localhost 给出了 HTTP 503 内部服务器错误。更改 IIS 中默认网站的绑定以使用主机名 localhost 而不是空白主机名。
https://i.stack.imgur.com/abv5Q.png
就我而言,我的默认应用程序池处于脱机状态。
为了解决这个问题,我检查了位于 C:\Windows\System32\LogFile\HTTPERR 中的 IIS 日志。向下滚动到最新的错误日志,这将向您显示 IIS 的问题(如果有)。
我的错误是“503 1 AppOffline DefaultPool”
解决方案
打开 IIS 管理器
单击应用程序池,这会在您的右侧列出所有应用程序池。
检查托管您的 api 或站点的应用程序池上是否有停止标志。如果是这样,请右键单击应用程序池,然后单击开始。
再次尝试从客户端访问您的服务
我将端口从 80 更改为 8080,这就是发生此错误的原因。我在搜索栏中写 localhost/ 然后发生此错误。我的问题通过在搜索中写入 localhost:8080/ 然后打开本地主机来解决。
这发生在我们内部网的服务器上。浏览博客文章和 Windows 日志后,发现在 2015 年圣诞节前几天(与 Windows 更新有关?)我的网站应用程序池想在文件夹 c:\inetpub\temp\appPools 中创建一个配置文件,但是对该文件夹的访问受到限制。这导致应用程序池被禁用。
在此临时文件夹上向所有人添加完全控制后,我重新启动了 Windows 进程激活服务,一切都再次上线。
如果我更优雅一点,可能足以授予 AppPool 用户对文件夹的完全控制权,但我似乎永远不记得应用程序池名称和应用程序池用户如何相互关联......
如果最近使用 .NET 框架和/或 ASP.NET 进行了任何安装或更新,也可能发生这种情况。如果您不确定最近发生了什么并且您的所有应用程序都使用 ASP.NET 版本 4,您可以尝试通过在管理员模式下在命令提示符下运行以下命令来重置它们。
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
aspnet_regiis -i
这确保安装或重新安装 ASP.NET 4 并更新现有应用程序以使用 ASP.NET 4 版本的应用程序池。它更新 IIS 元数据库中的 IIS 经典和集成模式处理程序和脚本映射。它还重新创建 ASP.NET v4.0 和 ASP.NET v4.0 经典应用程序池,并将 .NET 框架 4 设置为 DefaultAppPool 和经典 .NET 应用程序池。
将 Windows 7 升级到 Windows 10 后与 IIS Express 10.0 相同。解决方案:转到 IIS 并启用所有禁用的网站并重新安装 ASP.NET Core。
还要检查地址栏并确保页面位于正确的位置。
可以返回此错误而不是 404(找不到页面)。就我而言,这是页面上没有包含子文件夹的错误链接。
我在开发机器上清理我的 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}
https://i.stack.imgur.com/XbpgFm.png
对我来说,解决方案是将 Enable 32-bit Applications 更改为 False
没有一个答案对我有用。所以我想分享我在研究数小时后发现的东西。
继续从事件日志中看到此消息:The Module DLL C:\Windows\system32\RpcProxy\RpcProxy.dll failed to load. The data is the error.
原来 dll 是 64 位的,无法加载到 32 位进程中。
您也可以尝试以下方法。
右键单击该站点并“基本设置...”单击“连接为...”单击特定用户并提供新凭据。
现在它应该可以工作了。
就我而言,由于公司政策,我不得不更改我的网络用户密码。因此,您需要编辑您的 AppPool:单击 Application Pools。选择您的池,“高级设置...”转到“流程模型”,单击“身份”,然后单击“特定用户”并提供新凭据。
这可能是因为与数据库的连接数。我有这样的情况,所以写了一个解构函数并杀死了 db open connection 并解决了。
我有同样的问题,发现它是由在 C:\Users 中创建用户配置文件的权限问题引起的。我授予 ApplicationPoolIdentity 对 C:\Users 文件夹的完全权限,启动了站点并且一切正常,配置文件必须已正确创建,并且我的站点正常运行。然后我从 ApplicationPoolIdentity 中删除了对 C:\Users 的访问权限。