【问题标题】:Why is my ASP.NET MVC Application requesting Windows Authentication?为什么我的 ASP.NET MVC 应用程序请求 Windows 身份验证?
【发布时间】:2009-05-09 21:28:40
【问题描述】:

我一直在构建一个 ASP.NET MVC 应用程序并使用表单身份验证。在我的控制器操作中,我有:

[授权(用户 = “我,乔”)]

效果很好。昨晚,当我发布最新更改并尝试查看我的网站时,它开始弹出一个 Windows 身份验证对话框。我查看了所有代码,无法弄清楚为什么它会更改为 Windows 身份验证。我的 web.config 文件至少 10 天没有更改。如果我从我的开发箱运行代码,它不会这样做......只有当它从我的主机运行时。如果我从控制器操作中删除 Authorize 行,它就不会发生。

我该如何解决这个问题,或者如何调试我的解决方案以了解为什么会发生这种情况?

顺便说一句,我的 web.config 说:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

【问题讨论】:

    标签: asp.net-mvc windows-authentication


    【解决方案1】:

    这很可能对 IIS 设置进行,以对 Web 服务器上的网站文件夹进行身份验证和权限。我会先检查这两个。

    【讨论】:

    • 这是一个托管解决方案,所以它会在我的主机基于 Web 的控制面板中的某个地方吗?如果我从代码中删除 Authorize 行,为什么会发生这种变化,更重要的是为什么它会停止工作?
    • 如果去掉 Authorize 属性,则允许匿名访问——因此没有授权提示。我怀疑发生了一些事情来重置授权设置以允许 Windows 身份验证。如果这些设置为从父级继承并且父级设置发生更改,那就可以解释了。
    • 但是如何在托管环境中设置或测试它呢?我的主机控制面板 (HELM) 似乎没有设置文件夹属性的方法。
    • 在查看 HELM 时,我看不到任何仅在“安全文件夹”上设置网站文件夹权限的方法。 scribd.com/doc/45828/Helm-User-Guide 这些设置是最近更改的吗?此时我会联系主机并要求他们确保运行该站点的帐户可以访问所有站点的公共文件夹和文件。
    • 鉴于行为和您的更新,可能是 Views/Account 文件夹或其中的文件之一存在权限问题。
    【解决方案2】:

    我只是在黑暗中拍摄,但是您的 web.config 中有 &lt;identity&gt; 设置吗?

     <system.web>
        ...   
        <identity impersonate="true"/>
        ...
     </system.web>
    

    如果是这样,删除此行可能会有所帮助。询问您的托管服务提供商为什么突然将 Windows 身份验证应用于您的网站也可能会有所帮助。正如其他人所提到的,有可能导致此行为的 IIS 设置。

    【讨论】:

      【解决方案3】:

      我认为您需要为 IUSER、IWAM 设置权限

      使用 Windows 资源管理器浏览到您要授予权限的文件夹。右键单击该文件夹并选择“属性”。在出现的对话框中,单击顶部附近的“安全”选项卡。然后,您可以为这些帐户(IUSR_machineName、IWAM_macnineName 和 ASPNET)添加或编辑安全性。

      【讨论】:

      • 这是一个托管解决方案,因此我无法浏览到该文件夹​​。你是说我应该在我的本地副本上做吗?
      • 不,您的本地副本已经可以使用,但在服务器上无法使用尝试浏览主机的控制面板以修复此问题,或使用 FileZilla 等 FTP 客户端应用程序设置文件夹权限
      猜你喜欢
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-08
      • 2019-06-30
      相关资源
      最近更新 更多