[英]asp.net (IIS 7.5) images/css give 500 error but work fine after login
我有一个启用智能卡的网站,该网站在IIS中禁用了匿名身份验证,并启用了SSL。
IIS根也禁用了匿名身份验证,但启用了Active Directory客户端证书身份验证。
还安装了静态内容角色服务。
在web.config中,我有
<authorization>
<deny users="?"/>
</authorization>
之后,我有
<location path="/css/main.css">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
在css
和images
文件夹中,我还具有由以下内容组成的web.config:
<configuration>
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</configuration>
我使用以自定义身份运行的AppPool,比如说APUser
在这些文件夹的Web服务器上,我已将权限设置为读取APUser,IUSR,匿名登录,用户,IIS_IUSRS和所有人。
该URL位于浏览器上的受信任站点中。
最初,图像和CSS返回错误500(使用开发工具进行网络捕获)。 登录后,它们显示正常。 在服务器本身上运行相同的问题。
如果我在IIS中启用了匿名身份验证,请禁用Active Directory客户端证书,然后更改deny users="?"
allow users="*"
,一切正常。
我缺少什么来禁用匿名身份验证,但仍显示图像/ css?
web.config授权设置按顺序工作。 那是因为您通过使用following拒绝未经身份验证的用户,所以它不再读取您的配置。
<authorization>
<deny users="?"/>
</authorization>
在这里阅读。
备注在运行时,授权模块遍历and标记,直到找到适合特定用户的第一个访问规则。 然后,根据找到的第一个访问规则是还是规则,授予或拒绝对URL资源的访问。 Machine.config文件中的默认授权规则是默认情况下允许的访问,除非另行配置。
对其进行更改,以使它们先于您拒绝未经身份验证的用户部分。
<location path="/css/main.css">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<location path="images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<authorization>
<deny users="?"/>
</authorization>
来自MSDN上的 “允许”
“用户
必需的字符串属性。
以逗号分隔的用户名列表,被拒绝访问该资源。 问号(?)拒绝匿名用户,星号(*)表示拒绝所有用户访问。”
现在,我认为那里存在错误,他们想说“允许”。
所以你想<allow users="?,*" />
在“模拟身份验证后的客户端”的组策略下,添加IIS_IUSRS
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.