Asp.net mvc MVC“;“访问被拒绝”;使用IIS

Asp.net mvc MVC“;“访问被拒绝”;使用IIS,asp.net-mvc,windows,model-view-controller,iis-7,authorization,Asp.net Mvc,Windows,Model View Controller,Iis 7,Authorization,在“访问被拒绝”消息之外遇到严重问题: 错误消息401.2:未经授权:由于服务器配置,登录失败。根据您提供的凭据和Web服务器上启用的身份验证方法,验证您是否具有查看此目录或页面的权限。请与Web服务器的管理员联系以获得其他帮助 我是怎么来的 在Windows7下运行,专业版。系统使用AD登录到系统(名称:System\login)。在VS2010中创建了一个名为XYZ的新MVC 3应用程序。没有对代码进行任何更改。将System.Web.mvc和System.Web.Helpers的引用文件设

在“访问被拒绝”消息之外遇到严重问题:

错误消息401.2:未经授权:由于服务器配置,登录失败。根据您提供的凭据和Web服务器上启用的身份验证方法,验证您是否具有查看此目录或页面的权限。请与Web服务器的管理员联系以获得其他帮助

我是怎么来的 在Windows7下运行,专业版。系统使用AD登录到系统(名称:System\login)。在VS2010中创建了一个名为XYZ的新MVC 3应用程序。没有对代码进行任何更改。将System.Web.mvc和System.Web.Helpers的引用文件设置为复制到Local=true

我所尝试的
  • 已将XYZ发布到文件系统位置“C:/websites/XYZ”
  • 使用IPA 127.0.0.1将“abc.xyz.com”添加到主机文件中
  • 在IIS管理器中创建了名为“XYZ”的新站点,并将物理路径设置为应用程序发布的路径(C:/websites/XYZ)
  • 将XYZ绑定到abc.XYZ.com:80
  • 确保站点运行.NET 4.0的应用程序池已集成
  • 应用程序池标识设置为ApplicationPoolIdentity
  • 在已发布文件的物理位置,右键单击文件夹并转到属性->安全性,并将IUSR添加到用户列表中,使其具有完全控制权
  • MVC项目的身份验证模式设置为“无”
  • 站点的身份验证已启用匿名访问,其他所有功能均已禁用
  • 我还启用了该站点的目录浏览
  • 完成所有这些之后,我重置了网站,刷新了浏览器,并重置了IIS。当我去abc.xyz.com时,我仍然会收到这个消息。我完全不知道下一步该检查什么

    我需要什么
    有人能帮我吗?我已经执行了几次谷歌搜索,搜索组合有“mvc localhost access denied”等等,我执行了我找到的建议。

    创建mvc应用程序时,一个选项是创建“Intranet”应用程序。这将在
    Web.config
    中默认打开“Windows”身份验证

    将此类项目发布到IIS时,需要在IIS管理控制台中为应用程序启用Windows身份验证。您可能还必须禁用匿名身份验证。

    已修复 嗯。找到了答案…至少是这个应用程序的答案。我将身份验证从Windows更改为匿名。然后,我删除了拒绝匿名访问的.NET授权规则。这两项功能使您能够访问应用程序,而无需伴随Windows授权的恼人的IIS登录弹出窗口

    我以前没有注意到的一件事是,我对网站所做的更改反映在发布位置的web.config文件中,而不是源文件中

    不幸的是,每次发布时,我都会重置身份验证。这可能是我遇到这么多麻烦的真正原因。吸取的教训。我很懊恼


    另一件我未能澄清的事情是,我正在使用IIS 7.5。

    将其添加到web.config文件中

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
        <!-- rest of config -->
    </system.webServer>
    
    
    

    希望这会有所帮助。:)

    如果要避免复制错误的文件:

    • 在这种情况下,请使用发布配置文件和转换:
    我的开发盒:

    <authentication mode="None" xdt:Transform="Replace"/>
      <authorization xdt:Transform="Replace">
      </authorization>
    
    
    
    制作:

    <authentication mode="Windows" xdt:Transform="Replace"/>
    <authorization xdt:Transform="Replace">
      <deny users="?" />
    

    我得到了错误,因为这是由web.config生成的

    
    
    忘了提到通过F5执行应用程序很好。请继续。完全删除了应用程序,但保留了网站。在同一位置创建了同名的新应用。确保它是一个“内部网”应用程序。同样的问题。我以为我最初选择了“Intranet”解决方案,但我必须确定。您是否在IIS管理控制台中启用了Windows身份验证?是的,它会打开IIS登录窗口,我不希望出现此窗口,因为规范要求以不同的方式进行授权。我们有一个自定义的包含式授权框架,需要在任何其他授权方案之外运行。正如您在回答中提到的,这是问题的根源。您的web.config说要使用Windows身份验证,但您正在禁止该网站使用它。这是建议还是经过验证的解决方案?回答问题时,最好给出一个来自实际过期的答案。在阅读了此配置选项的文档后,我认为它与问题中的问题无关。遇到了类似的问题。把我的头发拔出来想把它修好。这篇文章让我走上了正确的道路。请确保您的web.config中没有以下内容:将MVC站点从IISExpress移动到IIS会导致此错误。在IIS中,它不会显示身份验证设置为Windows,并且web.config拒绝未经身份验证的用户。奇怪的是,在IIS中重新应用正确的身份验证设置后,它工作了。user5635311:感谢您的响应。不幸的是,因为我提出这个问题已经两年多了,所以我转到了VS 2013。当我有空闲时间(LOL)时,我可以在那个版本上测试这个实验,但是当前的应用程序运行得很好。
    <appsettings>
        <add key="vs:EnableBrowserLink" value="false"></add>
    </appsettings>
    <system.web>
      <compilation debug="false" targetFramework="4.5" />
    </system.web>