Asp.net mvc 401未经授权:由于凭据无效,访问被拒绝

Asp.net mvc 401未经授权:由于凭据无效,访问被拒绝,asp.net-mvc,iis,http-status-code-401,form-authentication,Asp.net Mvc,Iis,Http Status Code 401,Form Authentication,我正在使用IIS Express部署MVC4应用程序。这个网站在同一台计算机上运行得很好。但在局域网中,它给了我错误401 <authentication mode="Forms"> <forms loginUrl="~/" slidingExpiration="true" timeout="20"> </forms> </authentication> 我正在以管理员模式从命令提示符启动IIS服务器。IIS响应请求时出错401

我正在使用IIS Express部署MVC4应用程序。这个网站在同一台计算机上运行得很好。但在局域网中,它给了我错误401

<authentication mode="Forms">
    <forms loginUrl="~/" slidingExpiration="true" timeout="20">
    </forms>
</authentication>
我正在以管理员模式从命令提示符启动IIS服务器。IIS响应请求时出错
401


有什么线索吗?

请确保在iis上启用了匿名身份验证,如下所示:


如果您正在使用IIS 7,请执行以下操作:

  • 选择您的站点
  • 点击错误页面
  • 编辑要素设置
  • 选择详细错误

  • 如果有人还在寻找,这为我们解决了问题:

    不管这对谁有帮助,这救了我的命

    IIS 7很难弄清楚我为什么得到401-未经授权:由于无效的凭据,访问被拒绝。。。在我这么做之前

  • 打开IIS并选择导致错误的网站
  • 打开“IIS”标题下的“Authentication”属性
  • 单击“Windows身份验证”项目,然后单击“提供程序”
  • 对我来说,问题在于谈判高于NTLM。我假设在幕后有某种握手,但我从来没有真正被认证过。我把NTLM移到了最上面的位置,然后砰的一声就把它修好了

  • .

    我意识到这是一个老问题,但在我的搜索中出现了这个问题。对于最近构建、首次部署的MVC应用程序也存在类似的问题,身份验证机制还没有完全解决

    在我的例子中,它不是IIS设置,而是一个没有装饰的控制器。我在Layout.cshtml中使用Render.Action/Html.Action,用户未经身份验证。因此布局试图在未经身份验证的上下文中加载经过身份验证的操作

    一旦我将操作更新为AllowAnonymous,问题就消失了,并且


    希望这对其他人有所帮助。

    我意识到这是一篇旧文章,但我在IIS 8.5上也有同样的错误。希望这能帮助另一个遇到同样问题的人(我没有看到我的问题在其他问题中有类似的标题)

    应用程序池标识的所有设置似乎都正确,但我继续收到错误消息。经过大量挖掘,匿名用户可以使用应用程序池标识或特定用户的凭据。无论出于何种原因,我的默认设置为特定用户。更改应用程序池标识的设置为我解决了这个问题

  • IIS管理器→ 地点→ 网站
  • 双击“身份验证”
  • 选择匿名身份验证
  • 从“操作”面板中,选择“编辑”
  • 选择应用程序池标识并单击确定
  • 希望这能为其他人节省一些时间

    我也面临类似的问题


    文件夹已共享,并提供了经过身份验证的用户权限,这解决了我的问题。

    在IIS 8.5中,我也遇到了同样的问题。我的一个有效解决方案是更改IIS以显示详细错误。见sna2stha的答案。但我认为在生产环境中将详细的错误消息转发给浏览器不是一个好主意。 我在httpErrors部分添加/更改了existingResponse属性,因此IIS不会处理任何Existing Asp.net响应:

    <system.webServer>
       <httpErrors existingResponse="PassThrough" />
    </system.webServer>
    
    
    

    这对我很有用。

    我今天也遇到了类似的问题。出于某种原因,我的GET请求没有问题,但是PUT请求在我的WCF-WebHttp服务中失败

    将以下内容添加到Web.config解决了此问题

     <system.web>
      <authentication mode="Forms" />
     </system.web>
    

    当我用MVC文件夹创建一个空项目,然后将应用程序部署到服务器时,我遇到了这个错误。我的问题是我没有在
    Web.config
    中定义身份验证,所以我所要做的就是将这一行添加到
    system.Web
    标记中

    <system.web>
        <authentication mode="None"/>
    </system.web>
    
    
    
    就我而言,
    我的应用程序是在
    MVC
    中开发的,我的家庭控制器类被
    [Authorize]
    修饰,这导致了这个问题

    所以我删除了它,因为我的应用程序不需要任何身份验证。

    我对一个网站有权限问题,只是无法让Windows身份验证工作。这最终是一个问题,一旦
    每个人
    用户都被授予了权限,它就开始工作了。

    我遇到了一个稍微不同的问题。凭据问题是针对运行应用程序的底层用户,而不是试图登录的用户。测试这一点的一种方法是转到IIS管理->站点->您的站点->基本设置->测试设置。

    在我的例子中,成功的原因是更改特定用户的匿名用户身份(IUSR)到应用程序池标识。怪怪的,因为其他站点正在使用特定用户IUSR,工作正常。

    我在IIS 10上遇到了这个问题。我就是这样修好的

  • 开放IIS
  • 选择站点
  • 开放式身份验证
  • 编辑匿名身份验证
  • 选择应用程序池标识

  • 正如许多答案所表明的那样,错误可能是由多种原因造成的。在我的例子中,它连接到授权规则:它们是在应用程序部署之后很久才添加的。IIS的此功能作为Windows组件打开(万维网服务->安全->URL授权)

    web.config中的这一特定部分是罪魁祸首:

    <system.webServer>
      <security>
        <authorization>
          <remove users="*" roles="" verbs="" />
          <add accessType="Deny" users="?" />
          <add accessType="Deny" users="user1,user2" />
          <add accessType="Allow" users="*" />
        </authorization>
      </security>
    </system.webServer>
    
    
    

    在这里,可以通过删除旧规则并选择性地添加允许的规则来覆盖本地规则,从而使其更加明确:


    是,已启用匿名身份验证。完美。:)谢谢,我只有表单验证,可以匿名访问登录页面。当机器本身一切正常时,我从一台远程机器上得到了401。“选择详细信息错误”修复了该问题。我不明白这是怎么让auth
    <system.webServer>
      <security>
        <authorization>
          <remove users="*" roles="" verbs="" />
          <add accessType="Deny" users="?" />
          <add accessType="Deny" users="user1,user2" />
          <add accessType="Allow" users="*" />
        </authorization>
      </security>
    </system.webServer>