IIS Express 在调试 ASP.NET MVC 时出现拒绝访问错误

Posted

技术标签:

【中文标题】IIS Express 在调试 ASP.NET MVC 时出现拒绝访问错误【英文标题】:IIS Express gives Access Denied error when debugging 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 没有提供文件夹列表以使这一点显而易见。跨度> 【参考方案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 可以为每个项目添加此设置,以便全局设置不会从其默认值更改,请参阅 ***.com/a/7168308/23566 我正在尝试该设置,因为我在 VS 2013 中也偶尔遇到此错误,让我们看看它是否有帮助,我会告诉你。 如果你使用 %userprofile%\documents\iisexpress\config\applicationhost.config 会更好。我的在 D 上:(感谢 Dan!danesparza.net/2014/09/…) 这是唯一对我有用的解决方案,非常感谢! 在 VS 2017 中尝试过,但没有成功。 Jason 发布的解决方案确实有效。【参考方案3】:

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

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

    F4 获取属性(不同于右键单击 属性) 将 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://***.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 文件丢失了。它出现在解决方案资源管理器中,带有感叹号。我更换了它,错误消失了。

【讨论】:

以上是关于IIS Express 在调试 ASP.NET MVC 时出现拒绝访问错误的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC5/IIS Express 无法调试 - 代码未运行

配置IIS Express,远程访问调试

如何配置 ASP.NET Core 1.0 以使用本地 IIS 而不是 IIS Express?

重定向到登录页面时,asp.net/iis 不附加 ReturnUrl

VS2015调试时没有启动IIS Express Web服务器

在 IIS Express 或其他 WebServer 上部署 ASP.NET MVC 应用程序?