我试图将身份validation设置直接设置到应用程序级别,IIS似乎并不接受它。
我在2012 R2上运行IIS 8.5。
以下是我在服务器级别禁用所有身份validation方法时发生的情况(请注意我在左侧栏中的select):
结果到这,这正是我所期望的:
现在,如果我在服务器级别重新启用匿名身份validation,并在应用程序级别执行相同的操作:
我得到以下内容,这是我的静态HTML页面的内容:
所以,如果我禁用所有的身份validation方法,它仍然通过,它不应该。
它正在读取web.config文件,我已经通过插入乱码来确认它,并popup通用的“发生错误”页面。 我也通过检查进程监视器来确认它,以确保它正在读取正确的web.config文件。
当我尝试设置失败的请求logging时,会发生同样的事情。 在应用程序级别,没有任何logging,但在服务器级别,我得到一个日志,其中不包含太多。 如果我仅在应用程序上启用了Windows身份validation(不带匿名),则可以在失败的请求日志中看到它不会尝试执行除匿名身份validation以外的任何操作。
我试图通过删除/添加angular色向导重新安装IIS,但仍然没有去。
任何人都有线索,我可以尝试下一步?
原来,我们的IIS安装脚本包含以下内容:
Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "system.applicationHost/applicationPools/applicationPoolDefaults" -Name "enableConfigurationOverride" -Value "False"
这本质上改变了所有应用程序池的默认设置,禁用了任何configuration覆盖。 本质上,这closures了在我们的网站中使用web.config文件的能力。
这绝对会做到这一点。 我看不到enableConfigurationOverride选项的UI中的任何东西。
所以我只是在Powershell中运行以下内容来解决这个问题:
Set-WebConfigurationProperty -PSPath 'MACHINE/WEBROOT/APPHOST' -Filter "system.applicationHost/applicationPools/applicationPoolDefaults" -Name "enableConfigurationOverride" -Value "True"