asp.net(IIS 7.5)images / css给出500错误但登录后工作正常

时间:2014-11-20 15:50:27

标签: asp.net iis-7.5

我有一个支持智能卡的网站,在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> 

cssimages文件夹中,我还有web.config包含:

<configuration>
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</configuration>

我使用运行自定义标识的AppPool,比方说APUser

在这些文件夹的Web服务器上,我有权限设置为APUser,IUSR,匿名登录,用户,IIS_IUSRS和Everyone读取。

网址位于浏览器的受信任网站上。

最初,图像和css返回错误500(使用带有开发工具的网络捕获)。登录后,它们显示正常。 在服务器上运行同样的问题。

如果我在IIS中启用匿名身份验证,请禁用Active Directory客户端证书,并将deny users="?"更改为allow users="*",一切正常。

我缺少什么来禁用匿名身份验证,但仍显示images / css?

3 个答案:

答案 0 :(得分:0)

web.config授权设置按顺序工作。这是因为您通过使用以下内容拒绝未经身份验证的用户,因此它不再读取您的配置。

<authorization>
    <deny users="?"/>
</authorization>

阅读here

  

备注在运行时,授权模块遍历    和标记,直到找到适合的第一个访问规则   特定用户。然后它授予或拒绝访问URL资源   取决于找到的第一个访问规则是a还是a    规则。 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>

答案 1 :(得分:0)

来自&#34;允许&#34; on MSDN here

&#34;用户

必需的字符串属性。

以逗号分隔的拒绝访问资源的用户名列表。问号(?)拒绝匿名用户,星号(*)表示拒绝所有用户访问。&#34;

现在,我认为那里有一个错误,他们想说&#34;允许&#34;。

所以你想要<allow users="?,*" />

答案 2 :(得分:0)

在“身份验证后模拟客户端”的组策略下,添加IIS_IUSRS