Windows 进程激活服务 (WAS) 将不再在我的 Windows 10 PC 上启动。因此,IIS 将无法启动。我不太确定它是什么时候发生的,但可能是在上个月。
在启动期间,我现在在系统日志中收到一系列 4 个错误事件:
WAS 5215:Windows Process Activation Service (WAS) 未能执行离线设置的初始化。数据字段包含错误号。[数据字段:50000780]
WAS 5005:Windows Process Activation Service (WAS) 正在停止,因为它遇到了错误。数据字段包含错误号。[数据字段:50000780]
服务控制管理器 7023:WAS 服务因以下错误而终止:文件存在。
服务控制管理器 7001:W3SVC 服务依赖于由于以下错误而无法启动的 WAS 服务:文件存在。
由于文件存在错误,我对此类错误的引用并不多。
(我尝试使用 ProcMon 来尝试识别它所指的文件,但它绝对拒绝运行。)
编辑...终于让 ProcMon 工作(在使用 VS2017 提取 64 位版本之后)。原来导致上述问题的文件是C:\Windows\System32\inetsrv\Config
文件夹中的“applicationhost.config.tmp”文件。删除该文件允许该过程进一步继续。
现在,第一个和第三个错误是:
WAS 5215:Windows Process Activation Service (WAS) 未能执行离线设置的初始化。数据字段包含错误号。[数据字段:0D000780]
服务控制管理器 7023:Windows 进程激活服务服务因以下错误而终止:数据无效。
根据 Yanbing Shi 的回答,以下是文件中的最新行iis.log
:
[01/13/2018 23:10:41] [ ***** IIS 10.0 Component Based Setup ***** ]
[01/13/2018 23:10:41] .\inetsrv\iissetup.exe /install SharedLibraries /nano
[01/13/2018 23:10:41] Setting Installation Type to Nano
[01/13/2018 23:10:41] Successfully added IIS_IUSRS ACE to DACL at %ProgramData%\Microsoft\Windows\WER\ReportQueue.
[01/13/2018 23:10:42] < !!FAIL!! > Failed to create the NetFrameworkConfigurationKey key container (result=0x8009000f)
[01/13/2018 23:10:42] < !!FAIL!! > Install of component SharedLibraries result=0x8009000f
[01/13/2018 23:10:42] < !!FAIL!! > COMPONENT::ExecuteCommand result=0x8009000f
[01/13/2018 23:10:42] [ End of IIS 10.0 Component Based Setup ]
回应石延兵接下来的回答……
起初,我无法查看/编辑/删除d6d986f09a1ee04e24c949879fdb506c_*
文件。当我试图查看它的权限时,我收到了一条消息:You do not have permission to view this object's security properties, even as an administrative user.
但是,我能够将所有权更改为“管理员”,然后向该组Full
授予权限,然后我就可以查看它了。该文件不是文本文件,但文件中大约 28 个字节是NetFrameworkConfigurationKey
. 我将文件移出该文件夹。
然后我跑net start was
了System error 80 has occurred. The file exists.
文件中没有添加任何内容,iis.log
但通常的错误事件已添加到系统事件日志中。
然后我手动删除了applicationhost.config.tmp
文件并运行net start was
. 这一次,我得到System error 13 has occurred. The data is invalid.
这一次,有新的条目iis.log
[03/18/2018 07:44:54] [ ***** IIS 10.0 Component Based Setup ***** ]
[03/18/2018 07:44:54] .\inetsrv\iissetup.exe /install SharedLibraries /nano
[03/18/2018 07:44:54] Setting Installation Type to Nano
[03/18/2018 07:44:55] Successfully added IIS_IUSRS ACE to DACL at %ProgramData%\Microsoft\Windows\WER\ReportQueue.
[03/18/2018 07:44:55] Created NetFrameworkConfigurationKey key containter
[03/18/2018 07:44:56] Created NetFrameworkConfigurationKey user key
[03/18/2018 07:44:56] Set ACLs on NetFrameworkConfigurationKey
[03/18/2018 07:44:56] < !!FAIL!! > Failed to create the iisWasKey key container (result=0x8009000f)
[03/18/2018 07:44:56] < !!FAIL!! > Install of component SharedLibraries result=0x8009000f
[03/18/2018 07:44:56] < !!FAIL!! > COMPONENT::ExecuteCommand result=0x8009000f
[03/18/2018 07:44:56] [ End of IIS 10.0 Component Based Setup ]
失败是因为 WAS 在启动期间无法访问机器密钥。升级后第一次启动时,如果没有,WAS 会尝试创建新的机器密钥,或者查询旧操作系统留下的旧机器密钥。在这种情况下,存在旧的机器密钥,但遗憾的是 WAS 无法访问它们,原因不明。这些机器密钥用于加密 applicationHost.config 或 web.config 中的敏感信息(例如用户密码)。如果没有可以使用的机器密钥,WAS 将无法启动。
以下删除 IIS 使用的几个机器密钥的步骤可能有助于允许 WAS 启动 - WAS 将在启动时简单地重新创建这些密钥。
对我来说,这是昨天运行 Windows 更新后开始的。从那时起安装的更新:
启动 Windows Process Activation Service (WAS) 会产生以下错误:
从系统事件日志:
不知道发生了什么。我验证了我的
administration.config
,applicationHost.config
并redirection.config
包含了预期的数据。我尝试从 恢复到自动备份的配置文件
C:\inetpub\history
,但没有结果。最后我采取了这些步骤:
备份所有配置文件
C:\Windows\System32\inetsrv\Config
。通过从 Windows 功能中取消选中以下内容删除了与 HTTP 相关的所有内容(请截取已安装的屏幕截图,以便之后轻松重新安装相同的模块):
重启。
C:\Windows\System32\inetsrv
。<applicationPools>
并<sites>
从备份applicationHost.config
到新创建的元素中C:\Windows\System32\inetsrv\Config\applicationHost.config
。iisreset
以确保。欢呼,我所有的开发站点都重新启动了。
在此之后,我比较了备份文件和新
applicationHost.config
文件,没有发现任何重大差异。事实上,当我将备份applicationHost.config
文件放入 Config 目录并运行另一个iisreset
文件时,一切仍然有效,所以我想这不是那个文件造成的问题。在最近的 Windows 更新之后,这也发生在我身上。在 Windows 功能中关闭然后打开 Windows Process Activation Service 对我有用。关闭此服务还将关闭您将重新打开的以下功能:
你能做以下检查吗
如果您遇到此类 WAS 启动失败,我相信它应该存在。
该临时文件也应该存在以解决此类故障。
现在我怀疑你会在 iis.log 中看到错误。您能否在此处粘贴错误以缩小原因范围?
我的问题(可能不是你的问题)是 machine.config 文件中有错误的 XML。
如果您刚刚编辑了 machine.config,而 WAS(和 IIS)无法启动,那是因为这个原因。