403 - Forbidden:成功部署 Web 后拒绝访问

Posted

技术标签:

【中文标题】403 - Forbidden:成功部署 Web 后拒绝访问【英文标题】:403 - Forbidden: Access is denied after successful web deployment 【发布时间】:2014-04-09 05:45:48 【问题描述】:

我使用 WebDeploy 3 将 MVC 5 应用程序部署到在 Windows 2012 R2 上运行的 IIS。一切都很好,除了有时在成功部署后我得到 403 - Forbidden: Access is denied从浏览器访问网站时出错。回收池解决了这个问题,但它不是合适的选择。我希望 IIS 在 WebDeploy 完成更新文件后自动回收池

..........
Info: Updating file (blabla\Web.config).
Info: Adding ACL's for path (blabla.com)
Info: Adding ACL's for path (blabla.com)
Total changes: 22 (0 added, 0 deleted, 22 updated, 0 parameters changed, 1314018 bytes copied)

为什么?如何解决问题?

Windows 事件日志(应用程序、安全性、WebDeploy 或 IIS)中没有警告或错误。该站点使用 InProc 会话,以 .NET 4.5 为目标,应用程序池具有默认设置(在 ApplicationPoolIdentity 下运行)。 IIS 身份验证仅启用匿名和表单模块。

【问题讨论】:

今天刚好发生在我身上...,你还记得解决方案是什么吗? 【参考方案1】:

这只是今天发生在我身上...花了几个小时摸索着尝试 SO 上提供的各种解决方案。

我正在使用 Visual Studio 2017 社区...并且我正在部署到 Windows Server 2012 R2 以及 Windows Server 2016。

对我有用的唯一解决方案是取消选中 Precompile during publishing 设置。

为什么这会有所不同我无法理解。

【讨论】:

我正要开始拔头发 :) 为什么会这样? 非常感谢,你不知道我在找到这个之前做了多少搜索。 “发布期间预编译”听起来是个好主意……我认为这是最近的一次破坏,我正在更新我在 2017 年制作的应用程序,并且一直选中此选项;以前从来都不是问题。【参考方案2】:

您是否尝试在 web.config 中的 <modules> 上添加 runAllManagedModulesForAllRequests="true"?我以前也遇到过这个问题,一直都解决了。

根据MVC4 HTTP Error 403.14 - Forbidden

【讨论】:

不幸的是,我不允许该设置(静态内容将通过 .net 管道),但感谢您提供有趣的链接!【参考方案3】:

这似乎是一个与托管权限相关的问题。 检查您的文件夹是否添加了网络服务作为角色并检查 iusr 一般来说,就我个人的经验而言,角色和权限存在问题。 如果你不能检查它要求你的主机提供商检查角色

【讨论】:

MsDeploy 为 ApplicationPoolIdentity(相当于 NETWORKSERVICE)显式设置 NTFS 权限(“为路径添加 ACL”)。我拥有服务器的管理员访问权限,因此可以检查所有内容,但不知道在哪里查看。 我知道应该是这样,但在某些情况下(我的旧服务器)可能会发生有时不会发生。在这种情况下,您可以尝试以下操作:通过 rdp、IIS 登录,右键单击域并单击编辑权限。检查启用了哪些角色以及它们的权限。 谢谢,下次出现问题时再做!

以上是关于403 - Forbidden:成功部署 Web 后拒绝访问的主要内容,如果未能解决你的问题,请参考以下文章

将 System.Web.Mvc 添加到 \bin 会使 MVC 3 应用程序抛出 403.14 Forbidden

HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容

Heroku 上的 Symfony:403 Forbidden 您无权访问此服务器上的 /

解决 Nginx 403 forbidden

Curl 命令成功但 python 请求得到 403 Forbidden

在 Laravel 4 中给出 403 Forbidden 错误的单一路线