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 Explorer
→ Right click on project
→ Properties
→ Web 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 无法调试 - 代码未运行
如何配置 ASP.NET Core 1.0 以使用本地 IIS 而不是 IIS Express?
重定向到登录页面时,asp.net/iis 不附加 ReturnUrl