IIS 8.5 不接受应用程序级别的身份验证设置

IIS 8.5 不接受应用程序级别的身份验证设置

我正在尝试将身份验证设置直接设置为应用程序级别,但 IIS 似乎不接受它。

我在 2012 R2 上运行 IIS 8.5。

当我在服务器级别禁用所有身份验证方法时发生的情况如下(请注意我在左侧边栏中的选择):

在服务器级别禁用-配置

结果是这样的,这正是我所期望的:

在服务器级别禁用 - 结果

现在,如果我在服务器级别重新启用匿名身份验证,并在应用程序级别执行同样的事情:

在应用程序级别禁用 - 配置

我得到以下内容,这是我的静态 HTML 页面的内容:

在应用程序级别禁用 - 结果

因此,如果我禁用所有身份验证方法,它仍然会通过,但事实并非如此。

它能正常读取 web.config 文件,我已通过向其中插入乱码来确认这一点,然后它会弹出通用的“发生错误”页面。我还通过检查进程监视器来确认这一点,以确保它读取的是正确的 web.config 文件。

当我尝试设置失败请求日志记录时,也会发生同样的事情。在应用程序级别,不会记录任何内容,但在服务器级别,我会收到一个日志,但其中包含的内容不多。如果我在应用程序上仅打开 Windows Auth(不带匿名),我可以在失败请求日志中看到它不会尝试执行除匿名身份验证之外的任何其他操作。

我已尝试通过删除/添加角色向导重新安装 IIS,但仍然无效。

有人知道我下一步可以尝试什么吗?

答案1

事实证明我们的 IIS 安装脚本包括以下内容:

Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST'  -Filter "system.applicationHost/applicationPools/applicationPoolDefaults" -Name "enableConfigurationOverride" -Value "False"

这实际上改变了所有应用程序池禁用任何配置覆盖。本质上,这关闭了使用网页配置我们网站内的文件。

这肯定会起作用。我在 UI 中看不到该enableConfigurationOverride选项的任何内容。

因此,我只需在 Powershell 中运行以下命令即可解决该问题:

Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST'  -Filter "system.applicationHost/applicationPools/applicationPoolDefaults" -Name "enableConfigurationOverride" -Value "True"

相关内容