为啥在 IIS 7.5 下部署 MVC 3 应用程序时出现 401.2/Access is denied 错误?
Posted
技术标签:
【中文标题】为啥在 IIS 7.5 下部署 MVC 3 应用程序时出现 401.2/Access is denied 错误?【英文标题】:Why am I getting a 401.2/Access is denied error deploying my MVC 3 app under IIS 7.5?为什么在 IIS 7.5 下部署 MVC 3 应用程序时出现 401.2/Access is denied 错误? 【发布时间】:2012-01-31 02:40:04 【问题描述】:我正在尝试将 ASP.NET MVC 3 应用程序部署到 Windows 2008 R2 机器上。我运行 Web 平台安装程序来安装 MVC 3 位和基本 IIS 设置。我创建了一个新文件夹 C:\Website 然后创建了一个新网站并将其指向该文件夹。
我看到有一个新的应用程序池标识“ApplicationPoolIdentity”,它与 IIS 6 不同(并且是一个“特殊”用户帐户,在文件夹的安全选项卡中并不真正可用)。我通过键入帐户“IIS AppPool\DefaultAppPool”并为其授予读取和执行/列出文件夹内容/读取访问权限(特别是:Traver 文件夹/执行文件、列出文件夹/读取数据、读取属性、读取扩展属性、读取权限)。
本网站的应用程序池配置为 v4 的 .NET 框架,集成管道。
在 IIS 身份验证中启用了“匿名身份验证”。
我的网站在 web.config 文件中有身份验证模式="Windows"。这是我第一次真正使用 Windows 身份验证。如果重要,Web 服务器是域的一部分。
当我尝试访问该站点时,我收到一个拒绝访问错误,401.2。我认为这可能与 Windows 身份验证设置有关,因此我修改了 web.config 并将身份验证模式设置为无。我得到同样的错误。
如果我进入网站,IIS/身份验证并启用 Windows 身份验证,它会提示我输入用户名/密码。如果我输入我的凭据,它就可以工作。但是,我担心它只是在工作,因为它实际上是在服务器上冒充我(而且我可以访问所有内容)。我真的不需要/想要在网站上进行模拟——我只使用 Windows 身份验证,这样我们就不必维护两组登录名。该网站仅检查用户所属的角色以选择性地显示/隐藏内容。网站上的默认页面没有在控制器上设置任何 [Authorize] 属性。在 web.config 文件中配置。
第二个问题 - 为什么会提示我输入用户名/密码?挑战/响应不会自动发生,并且仅在身份验证失败时才提示?
显然这里有一些我不理解但我不知道是什么的交互。我在事件日志中没有看到任何有用的错误。
我已经搜索了错误并尝试了一些修复,例如,我尝试使用以下命令从命令行重置 ASP.NET 配置:aspnet_regiis -i 没有任何运气。
已解决
我能够得到这个工作。在网站配置下有一个“.NET 授权”选项。这被配置为拒绝所有匿名用户。我删除了该规则,然后添加了一条规则以允许所有匿名用户。现在我可以在不登录的情况下访问该站点。然后我进入 IIS 身份验证并启用 Windows 身份验证并禁用匿名身份验证。
Internet Explorer 在不提示的情况下传递凭据。 Firefox 提示输入凭据。有一个配置设置来配置这个:
打开火狐 转到:about:config(并同意继续) 过滤器:network.automatic 双击network.automatic-ntml-auth.trusted-uris 添加您的站点(多个站点可以用逗号分隔)。包括 http:// 部分。我正在测试的机器没有 Chrome,但在我的开发人员上似乎可以正常工作。机器。
【问题讨论】:
如果他们能够回答您自己的问题,我会支持您的解决方案。解决了我的问题。 【参考方案1】:确保您的文件系统权限正确。如果他们尝试删除部署在应用程序 bin 目录中的 WebMatrix.Data.dll 和 WebMatrix.WebData.dll - 这对我有用,我记得有同样的问题。
【讨论】:
以上是关于为啥在 IIS 7.5 下部署 MVC 3 应用程序时出现 401.2/Access is denied 错误?的主要内容,如果未能解决你的问题,请参考以下文章
无法在 IIS 7.5 上运行 ASP.NET MVC 2 Web 应用程序
IIS 7.5 中的 Asp.net mvc 4 应用程序问题