当服务器加入域时,IIS AppPools 停止工作

当服务器加入域时,IIS AppPools 停止工作

我有一台 Windows 2012 R2 服务器,该服务器配置了 IIS、网站和其他支持软件,但未连接到域。服务器加入域后,当请求网站时,IIS AppPools 会崩溃。

我发现的问题是,每次测试网页时,我都会收到 503 服务不可用错误。例如,如果我转到“http://本地主机/dc/“我收到此错误消息:

暂停服务

我发现当请求网页时,应用程序池会崩溃。例如,默认网站使用应用程序池 DefaultAppPool。如果我确保它已启动,然后请求网页,DefaultAppPool 就会停止。

在事件查看器中,我可以看到以下消息:“工作进程未能正确初始化,因此无法启动。数据是错误。”

错误中的数据是“80070005”。使用 MS 的 err.exe 工具,我查找了该数据并得到了以下信息:

C:\Users\dhughes.figleaf\Desktop\Err>err.exe 80070005
# for hex 0x80070005 / decimal -2147024891 :
  COR_E_UNAUTHORIZEDACCESS                                      corerror.h
# MessageText:
# Access is denied.
  DIERR_OTHERAPPHASPRIO                                         dinput.h
  DIERR_READONLY                                                dinput.h
  DIERR_HANDLEEXISTS                                            dinput.h
  DSERR_ACCESSDENIED                                            dsound.h
  ecAccessDenied                                                ec.h
  ecPropSecurityViolation                                       ec.h
  MAPI_E_NO_ACCESS                                              mapicode.h
  STIERR_READONLY                                               stierr.h
  STIERR_NOTINITIALIZED                                         stierr.h
  E_ACCESSDENIED                                                winerror.h
# General access denied error
# 11 matches found for "80070005"

我能从中看出的是,这似乎是一个访问被拒绝的错误。但我不确定拒绝的是什么。我已确保 inetpub 目录上的权限正确,但这并没有什么不同。我还添加了 IIS 失败请求跟踪模块,但它根本没有记录任何内容。

我使用进程资源管理器来监视 w3svc 进程,发现当我尝试访问网页时,该进程会尝试访问 windows 目录下的配置信息,但被拒绝访问。

我尝试摆弄 IIS 配置目录的权限,但无法在那里进行更改,而且坦率地说,这样做感觉不对。

有人知道这个错误可能来自哪里或者我该如何进一步研究它?

我也尝试过:

  • 从域中删除服务器确实可以解决 IIS AppPool 崩溃问题,但服务器需要连接到域。
  • 我尝试卸载并重新安装 IIS。问题仍然存在。

可能相关:这是从另一个 VM 克隆的 VM。

任何帮助或建议都将不胜感激。

答案1

我发现该问题发生在新安装的系统上,新安装的 IIS 以及默认站点中包含页面的默认应用程序池上。

我们发现,唯一(看似)的解决方案(在 IIS 中)是将应用程序池的标识(在应用程序池的“高级设置”中)从默认的 applicationpoolidentity 更改为其他 3 个选项之一:localservice、localsystem 或 networkservice。(进行更改后,不要忘记启动应用程序池。)

至于为什么这样做有效,以及其含义是什么(以这种方式运行应用程序池,或者为什么默认设置不起作用),我们没有机会去探索。

我确实认为有问题的这台服务器确实加入了 AD,正如 Doug 在他的原始帖子中指出的那样(好久不见,Doug)。所以问题似乎就在这里。我怀疑可能有比我们做的更好的解决方案。我期待看到其他人是否对此进行详细说明。

但是由于其他人在这里和其他地方都提出了这个问题,并且这是谷歌搜索结果中第一个没有关闭线程并且我可以提供这个回复的结果,我希望至少这个解决方法可以帮助到某些人。

答案2

当服务器加入域时,GPO 可能会影响服务器,从而不允许应用程序池标识正常工作。

您应该留意影响用户权限的 GPO;最可能的罪魁祸首是那些限制“作为服务登录”权限或操纵本地组成员资格的 GPO。

gpresult允许您检查哪些 GPO 已应用于计算机以及它们应用了哪些设置。

相关内容