【问题标题】:IIS Express gives Access Denied error when debugging ASP.NET MVCIIS Express 在调试 ASP.NET MVC 时出现拒绝访问错误
【发布时间】:2012-01-29 13:50:58
【问题描述】:

我创建了一个 ASP.NET MVC 3 项目,并在开发时使用 IIS Express 作为 Web 服务器。当我尝试调试时,我收到以下错误消息。

如何解决?

“/”应用程序中的服务器错误。

访问被拒绝。 说明:访问处理此请求所需的资源时出错。服务器可能未配置为访问所请求的 URL。

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

【问题讨论】:

  • 您是否在没有管理权限的情况下运行 IISExpress?
  • 所以在我思考了一段时间之后,我终于意识到这是因为 VS 没有设置默认页面,而且显然 IISExpress.exe 没有提供文件夹列表以使这一点显而易见。跨度>

标签: asp.net-mvc debugging iis iis-express access-denied


【解决方案1】:

如果您使用的是 Visual Studio,您也可以在 Solution Explorer 中左键单击项目并将 Windows Authentication 属性更改为 Enabled属性窗口中。

【讨论】:

  • 这不是 Visual Studio 2012 特有的,至少在 Visual Studio 2010 上也可以。
  • 在 VS 2013 中为我工作。
  • 您还需要禁用匿名身份验证。
  • 在解决方案资源管理器中点击解决方案节点下的项目名称,然后切换到属性窗口,您可以看到属性Windows身份验证将其设置为启用
  • 我在属性窗口的任何地方都看不到这个设置。我正在使用 VS 2015。
【解决方案2】:

这个问题的原因是 IIS Express 不允许 WindowsAuthentication。这可以通过设置来启用

<windowsAuthentication enabled="true">

在位于 C:\Users[username]\Documents\IISExpress\config 的 applicationhost.config 文件中。

【讨论】:

  • Visual Studio 2010 和 2012 可以为每个项目添加此设置,以便全局设置不会从其默认值更改,请参阅 stackoverflow.com/a/7168308/23566
  • 我正在尝试该设置,因为我在 VS 2013 中也偶尔遇到此错误,让我们看看它是否有帮助,我会告诉你。
  • 如果你使用 %userprofile%\documents\iisexpress\config\applicationhost.config 会更好。我的在 D 上:(感谢 Dan!danesparza.net/2014/09/…
  • 这是唯一对我有用的解决方案,非常感谢!
  • 在 VS 2017 中尝试过,但没有成功。 Jason 发布的解决方案确实有效。
【解决方案3】:

我使用了 Jason 的答案,但想澄清如何进入属性。

  1. 在解决方案资源管理器中选择项目

  1. F4 获取属性(不同于右键单击 属性)
  2. Windows 身份验证 更改为 启用

【讨论】:

  • 非常感谢您详细说明并指定需要更改的是 F4 属性。
  • 谢谢!我还必须将“匿名身份验证”设置为“启用”。
  • 非常感谢!
  • 你很漂亮。
  • 我用的是VS 2015,这个不存在!
【解决方案4】:

在 IIS Express 上托管: 1. 在解决方案资源管理器中单击您的项目以选择项目。 2. 如果“属性”窗格未打开,请将其打开 (F4)。 3. 在项目的“属性”窗格中: a) 将“匿名验证”设置为“禁用”。 b) 将“Windows 身份验证”设置为“启用”。

【讨论】:

    【解决方案5】:

    就我而言,我必须打开文件:

    C:\...\Documents\IISExpress\config\applicationhost.config
    

    我在文件中有这个:

      <authentication>
      <anonymousAuthentication enabled="true" User="" />
    

    我刚刚删除了User="" 部分。我真的不知道这东西是怎么来的...... :)

    注意:确保applicationhost.config末尾有这样的内容:

       .
       .
       .
       <location path="MyCompany.MyProjectName.Web">
            <system.webServer>
                <security>
                    <authentication>
                        <anonymousAuthentication enabled="true" />
                        <windowsAuthentication enabled="false" />
                    </authentication>
                </security>
            </system.webServer>
        </location>
    </configuration>
    

    您可能还想看看这里:https://stackoverflow.com/a/10041779/114029

    现在我可以按预期访问登录页面了。

    【讨论】:

    • 我按照您的步骤操作,但它对我不起作用。如果从 vs2010 打开它可以正常工作,vs 2013 中的问题是什么
    • @user1016740 我不确定,因为有很多可能性/路径可以尝试解决这个问题。我在这里描述的步骤在我认为与您不同的环境中解决了它。
    • 您项目的身份验证配置不属于applicationHost.config。它应该在您的应用程序的web.config 中。
    【解决方案6】:

    在我的情况下,我之前从 VS 运行的应用程序保留了 URL。我可以通过在控制台中运行来看到这一点:

    netsh http show urlacl
    

    为了删除这个预订,我在 提升 控制台中运行了这个:

    netsh http delete urlacl http://127.0.0.1:10002/
    

    我发现这些步骤here 解决了我的问题。

    我正在使用 VS2013

    【讨论】:

    • 如果您曾经编辑过您的 applicationhost.config 以同时在多个端口上运行站点,这将非常方便。从 .config 中删除条目不会删除 netsh 中的任何保留。谢谢大佬。
    【解决方案7】:

    我必须在 Administrative Mode 中运行 Visual Studio 才能消除此错误。

    【讨论】:

      【解决方案8】:

      我也遇到了同样的问题,终于解决了。

      Solution ExplorerRight click on projectPropertiesWeb tab Project Url

      我又选择了一个端口号,一切都变好了!

      【讨论】:

        【解决方案9】:

        我打开了我的 web.config 文件,发现并删除了这个部分:

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

        我的网站出现了,但身份验证存在问题..

        【讨论】:

        • 好的,这有助于解决问题,但现在我还有一些其他问题需要解决。
        【解决方案10】:

        以上都不适合我。这在今天之前一直为我工作。然后我意识到我一直在我的笔记本电脑上创建一个托管连接,并与我的无线网络连接共享了一个互联网连接。

        解决我的问题:

        转到控制面板 > 网络和 Internet > 网络连接

        右键单击您可能拥有的任何辅助无线网络连接(我的名为无线网络连接 2),然后单击“属性”。

        转到顶部的“共享”标签。

        取消选中“允许其他网络用户通过此计算机的 Internet 连接进行连接”复选框。

        点击 OK > 然后应用。

        希望这会有所帮助!

        【讨论】:

          【解决方案11】:

          我刚刚在 IIS EXPRESS 中修复了这个确切的问题,方法是将应用程序主机 .config 编辑到特定于以下内容的位置部分。我在 Visual Studio 2012 中设置了 Windows 身份验证,但是当我进入 XML 时,它看起来像这样。

          如下图需要添加windows auth标签。

          <windowsAuthentication enabled="true" />
          
          <location path="MyApplicationbeingDebugged">
                  ``<system.webServer>
                      <security>
                          <authentication>
                              <anonymousAuthentication enabled="false" />
                              <!-- INSERT TAG HERE --> 
                          </authentication>
                      </security>
                  </system.webServer>
          </location>
          

          【讨论】:

            【解决方案12】:

            我一直在努力解决这个问题,尝试使用 Provider Hosted 创建一个简单的 SharePoint 应用程序。

            通过 applicationhost.config 后,在该部分中,basicAuthentication 设置为 false。在我的场景中,我将其更改为 true 以通过 401.2。还有很多其他链接可以帮助您找到 IIS Express 的 applicationhost.config。

            【讨论】:

              【解决方案13】:

              我在任何地方都没有看到这个“完整”的答案;我刚刚看到关于更改端口号的帖子发布后,所以嗯。

              确保在 Visual Studio 的项目属性中,该项目 url 未分配给 IIS 中用于任何站点绑定的相同 url 或端口。

              我正在寻找“为什么”,但我的假设是 IIS 和 Visual Studio 的 IIS express 在创建虚拟目录时使用相同的目录,而 Visual Studio 只能创建新的虚拟目录并且不能修改 IIS 在将其绑定应用到站点时创建的任何内容。

              请随时纠正我的原因。

              【讨论】:

                【解决方案14】:

                我们的错误页面位于登录页面的后面,但登录页面的其中一个控件出现错误,从而创建了一个无限循环。

                我们从有问题的页面中删除了所有控件,然后将它们一一添加,直到找到并修复了正确的控件。

                【讨论】:

                  【解决方案15】:

                  在我的例子中(ASP.NET MVC 4 应用程序),Global.asax 文件丢失了。它出现在解决方案资源管理器中,带有感叹号。我更换了它,错误消失了。

                  【讨论】:

                    猜你喜欢
                    • 2017-01-27
                    • 1970-01-01
                    • 2021-08-05
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-09-10
                    • 2019-06-21
                    • 2014-01-08
                    • 1970-01-01
                    相关资源
                    最近更新 更多