【问题标题】:How can I stop Visual Studio's Web Publish from removing write permissions from my target web site?如何阻止 Visual Studio 的 Web Publish 从我的目标网站中删除写入权限?
【发布时间】:2013-05-27 23:57:15
【问题描述】:

我有一个正在自定义的网络应用程序(实际上是 Orchard CMS),我想使用 Web Publishing aka MSDeploy 将我的构建服务器直接推送到我的托管服务提供商。

问题是,当我发布站点时(从 Visual Studio,尚未从构建服务器尝试过),它会从目标网站中删除写权限,这使得 Orchard 立即崩溃,因为它不能再访问其数据库(等)。

我们可以争论这是否明智,但归根结底是 Orchard 需要写入权限,而网络发布坚持要删除该权限,这会破坏网站。不好。每次发布时我都必须登录服务提供商的控制面板并重置权限,这使得该过程不太自动化。

那么,如何让 Web Publishing 不使用 ACL?我在任何地方的解决方案中都找不到任何设置。

谢谢, --蒂姆

【问题讨论】:

  • 这确实应该是发布中的设置,但网络部署文档非常不完整。

标签: orchardcms acl msdeploy web-publishing


【解决方案1】:

您可以通过将其添加到 .pubxml 文件来添加关闭 ACL 设置功能:

    <IncludeSetACLProviderOnDestination>False</IncludeSetACLProviderOnDestination>

http://msdn.microsoft.com/en-us/library/ff398069.aspx

文章还提到您可以通过本地 .wpp.targets 文件为所有发布配置更改此设置。如果您使用多个发布配置,请务必考虑该选项

【讨论】:

  • 有趣 - 这似乎很简单。按照@Paul 的建议,这种方法与修改 .csproj 文件有什么区别?
  • 编辑发布文件只会更改该发布配置文件的设置。编辑项目文件会在每次发布时使用任何配置文件更改它。还有一种方法可以更改 Visual Studio 文件夹中的目标(或类似)文件,如果我没记错的话,它将更改所有项目的此设置,但我不记得这是哪里了。
  • 我在答案中链接到的文档还提到了 .wpp.targets 文件——如果您想将此设置应用于所有配置文件,则创建该文件并将此设置放入其中是另一种选择不仅仅是选定的个人资料。
  • 我发现很难选择接受哪个答案,因为它们本质上都提出了相同的解决方案。最后我选择了这个,因为它看起来更简单、更灵活,并提到了我最终使用的 .wpp.targets 文件,并且因为我的后续问题得到了解答。谢谢!
  • 有更友好的 UI 解决方案吗? (例如,Visual Studio 扩展或工具,无需卸载项目即可轻松配置 - 编辑 - 重新加载)
【解决方案2】:

在某些情况下,您可能会发现在使用 Web Deploy 发布项目后,ASPNet IUSR 无法写入根目录或其中的任何文件(App_Data 除外)。

默认情况下,Web Deploy 将 ASPNet IUSR 的 ACL 设置为只读。为防止在您发布应用程序时出现问题,您需要找到项目文件并进行一些更改。对于用 Visual Basic 编写的应用程序,项目文件将以扩展名 .vbproj 结尾,对于用 C# 编写的应用程序,项目文件将以扩展名 .csproj 结尾。在项目文件中找到:

<propertygroup condition=" '$(Configuration)|$(Platform)' ==
'Release|AnyCPU' "></propertygroup>

并将其更改为:

<propertygroup condition=" '$(Configuration)|$(Platform)' ==
'Release|AnyCPU' ">
<includesetaclproviderondestination>False</includesetaclproviderondestination>
</propertygroup>

这将确保 ACL 不会被 Web Deploy 修改。

如果您已经部署到第三方托管服务提供商,您可能需要联系他们以重置您的权限,然后再进行其他部署。

【讨论】:

  • 网站正常运行 - 幸运的是托管服务提供商允许我在控制面板中启用写入权限。
  • 有趣——这似乎很简单。正如@tdykstra 所建议的那样,这种方法与修改 .pubxml 文件有什么区别?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
相关资源
最近更新 更多