允许匿名访问使用Windows身份验证的IIS站点中的目录

时间:2015-09-23 20:41:14

标签: c# asp.net authentication iis

我有一个使用Windows身份验证运行ASP.NET 4.0的IIS8站点。

在我的IIS身份验证设置中,除Windows身份验证外,所有设置都被禁用。用户可以正确地进行身份验证并按预期使用该站点。

但是,我现在有一个Uploads文件夹,其中包含我想要从其他应用程序向未经过身份验证的用户公开的图像。

在我的web.config文件中,我有以下与认证/授权相关的行:

  <system.web>
    <authentication mode="Windows"/>
  </system.web>
  <location path="Uploads">
    <system.web>
       <authorization>
          <allow users="*" />
       </authorization>
    </system.web>
  </location>

如何允许匿名访问uploads文件夹,同时保留其他所有内容的Windows身份验证?目前,他们必须登录到其他应用程序,然后在访问相关网站的图像时,他们必须进行身份验证才能访问它们。

另外,位置路径是否相对于web.config文件正确?

编辑:不确定这是否重要,但我们的网站内部和外部都可用。如果从我们域中的计算机访问,它会自动登录,如果它是不在域中的计算机,则会将它们重定向到登录页面。

2 个答案:

答案 0 :(得分:2)

我在另一个问题上找到了答案:Allow anonymous authentication for a single folder in web.config?

  1. 首先,我必须进入C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config
  2. 搜索此行,并更改为“允许”而不是“拒绝”
  3. 然后将下面的代码放入web.config文件
  4. 代码:

    <location path="Path/To/Public/Folder">
      <system.webServer>
        <security>
          <authentication>
            <anonymousAuthentication enabled="true" />
          </authentication>
        </security>
      </system.webServer>
    </location>
    

答案 1 :(得分:0)

你需要做的是删除匿名的“拒绝”规则,因为它会被继承,它仍会阻止用户,例如:

{{1}}

确实,位置路径是相对于web.config所在的文件夹。

我也注意到您使用的是system.web而不是system.webServer,这是您应该使用的。