【问题标题】:IIS 7 Basic authentication location issueIIS 7 基本身份验证位置问题
【发布时间】:2011-09-01 12:49:01
【问题描述】:

我有一个使用基本身份验证的 IIS 7 网站。有些页面必须是公开的。我在 web.config 的 location 元素中添加了这个异常,它看起来像这样:

   <location path="Errors">
    <system.webServer>
      <security>
        <authorization>
          <remove users="*" roles="" verbs="" />
          <add accessType="Allow" users="*" />
        </authorization>
      </security>
    </system.webServer>
  </location>

但是,如果我尝试访问该文件夹中的某些文件,则会收到以下错误:

HTTP 错误 401.2 - 未经授权 您无权查看此内容 由于身份验证标头无效而导致的页面。详细的错误信息 模块 IIS Web 核心通知 AuthenticateRequest 处理程序 StaticFile 错误代码 0x80070005 请求的 URL http://srv/Errors/error401.htm 物理路径 D:\www\MyApp\Errors\error401.htm 登录方式尚未确定 登录用户尚未确定

如何在我的网站上进行基本身份验证,但允许所有人访问 Errors 目录?

【问题讨论】:

    标签: asp.net iis iis-7


    【解决方案1】:

    IIRC,“?”适用于匿名用户...所以也打开匿名身份验证并将其放在您的 web.config 中...希望它对您有用...

    IIS7

    <location path="Errors">
      <system.webServer>
        <security>
          <authorization>
            <remove users="*" roles="" verbs="" />
            <add accessType="Allow" users="*" />
          </authorization>
        </security>
      </system.webServer>
    </location>
    

    IIS6(或 IIS7 经典模式)

    <location path="Errors">
      <system.web>
        <authorization>
          <allow users="?" />
        </authorization>
      </system.web>
    </location>
    

    编辑

    我不确定删除经过身份验证的用户 (*) 是否是一个好主意,但是...经过身份验证的用户也会遇到错误...向他们表达爱意...;)

    EDIT 2 (在 IIS7 中更改为经典模式)

    【讨论】:

    • 不幸的是,这也不起作用。我已经尝试过 * 和 ?但什么都没有......
    • 您的应用程序池是否设置为集成模式?
    • 那也不行……我很困惑。我发现这篇文章learn.iis.net/page.aspx/142/…查看差异表。如果我理解正确,那么评估 IIS 身份验证规则的方式,如果您在父项上拒绝某些内容,则不能在子项上覆盖它,因为首先对父项进行评估。这真的没有任何意义。
    猜你喜欢
    • 1970-01-01
    • 2015-07-22
    • 2013-03-23
    • 1970-01-01
    • 2014-09-15
    • 2018-12-20
    • 2021-05-17
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多