我正在尝试强制我的Web应用程序作为AppPool用户(Domain \ UserForApp)完全运行,并且我在IIS中正确设置了设置并且一切正常并且“System.Security.Principal.WindowsIdentity.GetCurrent()。” “返回正确的”Domain \ UserForApp“。
但是,当我尝试将我的网络应用程序目录的权限限制为所需的简单:
我无法再加载任何静态文件。所以我下载了Process Monitor来找出原因并且每当它试图访问一个静态文件时,我都会收到以下错误:
ACCESS DENIED:
Desired Access: Generic Read
Disposition: Open
Options: Sequential Access, No Buffering
Attributes: RE
ShareMode: Read, Write, Delete
AllocationSize: n/a
Impersonating: NT AUTHORITY\IUSR
正如您从上面所看到的那样,IUSR没有权限,所以这是正确的,但我只是不明白为什么它试图模仿无论如何。在我的web.config文件中,我有:
<location path="" overrideMode="Deny">
<system.web>
<identity impersonate="false" />
</system.web>
</location>
只是为了确保没有人打开模仿,但它没有效果。
它在Classic和Pipelined模式下都不起作用,但错误略有不同。在查看图像时,它只显示一个HTTP Error 401.3 - Unauthorized
页面,当使用Pipelined时,它会重定向到登录站点。
答案 0 :(得分:2)
如果您不希望该网站以应用程序池的身份运行,那么您需要:
<location path="my_site">
<system.webServer>
<security>
<authentication>
<anonymousAuthentication userName="" />
</authentication>
</security>
</system.webServer>
</location>
您可以通过以下操作在applicationHost.config
文件(可能是最佳位置)中进行设置:
APPCMD.exe set config "my_site" -section:system.webServer/security/authentication/anonymousAuthentication /username:"" /commit:apphost