我正在尝试在 IIS 7.5 中为新网站设置 Windows 身份验证。我已为网站启用 Windows 身份验证模块,并禁用所有其他身份验证类型(如匿名、基本等)。网站的应用程序池以自定义身份运行,其 SPN 和主机标头已正确设置。尝试通过浏览器访问网站下托管的任何内容(如文本文件)时,我收到 401.2 错误。我按照这个建议并添加了使用AppPoolCredentials 属性到 applicationHost.config 并且我能够使用 Windows 身份验证访问资源。
然后我删除了该属性并再次保存了 applicationHost.config,有效地撤消了我的更改,并且我仍然可以访问该资源。这是怎么回事?有人能帮我理解这种行为吗?
此外,在 Win Server 2008R2 上安装 IIS 7.5 时,我注意到对站点(或应用程序)默认配置的任何更改都会导致 IIS 在站点/应用程序的根目录中自动生成 Web.config 文件。是否有一个设置可以启用此功能,而不必直接更新 applicationHost.config?
编辑浏览器正在缓存响应,因此撤消更改并保存文件似乎没有什么区别。所以我现在唯一的问题与 Web.config 的生成有关
答案1
关于您的第二个问题,如何确保配置更改持久保存到站点web.config
而不是applicationHost.config
,这可以通过功能委派来控制。
如果您导航到 IIS 管理器的计算机节点,您将看到一个名为“功能委派”的图标:
启动此 IIS“小程序”,您将看到可将其配置委托给的功能列表web.config
。
标记的设置读/写通常会将其设置写入web.config
文件中。标记为只读通常会将其设置写入文件applicationHost.config
中并且无法被覆盖web.config
。
事实上,<windowsAuthentication>
配置可以委托给web.config
文件。
小问题:
并非所有小程序都会显示您可以配置的全部设置。属性就是一个很好的例子<windowsAuthentication>
useAppPoolCredentials
。在身份验证小程序中看不到它,甚至在高级设置。
但是你可以通过以下方式获取此值(以及几乎所有其他值)配置编辑器。如果您在 IIS 管理器左侧窗格中导航到您的网站节点,您将在下方看到此图标管理:
如果你启动配置编辑器,你会看到一个下拉列表,其中包含各种设置树:
如果我们选择/system.webServer/security/authentication/windowsAuthentication
节点,我们将看到可以更改的全部设置。在这里我们可以看到我们感兴趣的设置(useAppPoolCredentials
):
您可以选择是否在网站中配置值,web.config
或者applicationHost.config
从从:配置部分树下拉菜单旁边的下拉列表:
如果某个部分没有被授权为读/写然后web.config
你会看到以下内容:
我们收到一条警报,说该特定功能已被锁定,所有设置都变灰并被禁用,并且有一个挂锁,表示此功能的子设置也被锁定。
最后,并非所有设置都可以委派,例如站点绑定、应用程序池、虚拟目录。