使用表单身份验证时使 public 页面可访问

Making a public page accessible when Forms Authentication is used

我们有一个受 IIS 中的表单身份验证保护的网站。我们想让每个人都可以访问本网站的一个页面,而无需任何身份验证。

我看到的所有资源都提到了使用标签,但由于某种原因它对我们不起作用。

web.config:

<configuration>
  <location path="public.htm">  
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="UserLogin.aspx" />
    </authentication>
    <authorization>
      <deny users="*" />
    </authorization>
  </system.web>
</configuration>

public.htm 和 UserLogin.aspx 都在同一个文件夹中。当我们浏览 public.htm 时,我们得到 401.2。

如果禁用表单身份验证,public.htm 可以访问。


更新(5/21):

已禁用表单身份验证,但仍出现 401.2 错误。

<configuration>
  <location path="public.htm">  
    <system.web>
      <authentication mode="None" />
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

  <system.web>
    <authentication mode="Forms" >
      <forms loginUrl="UserLogin.aspx" />
    </authentication>
    <authorization>
      <deny users="*" />
    </authorization>
  </system.web>
</configuration>

听起来您的匿名身份验证已被禁用或您当前的登录用户没有权限查看 public.htm。

如果您在 VS 中托管它,请确保已选择启用匿名身份验证,并且您当前的登录用户有权访问 htm 文件。

如果您在 IIS 中托管它,请确保已启用匿名身份验证并且授权规则看起来就像

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

applicationhost.config中的身份验证看起来像

  <location path="Sitename">
        <system.webServer>
            <security>
                <authentication>
                    <anonymousAuthentication enabled="true" />                    
                </authentication>
            </security>
        </system.webServer>
    </location>

public.htm 的授权规则是。

<location path="public.htm">  
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>

请记住授予 IUSER 读取权限以访问 public.htm。