保护IIS文件夹不被WebDeploy删除

时间:2012-11-18 12:13:23

标签: asp.net iis webdeploy

我的网络应用程序上有一个文件夹,用于存储用户上传,即个人资料图片等。

当我使用WebDeploy时,有一个选项“保留额外文件(不要删除)”,勾选时确保不删除配置文件图片。

我正在寻找的方法是确保即使未被删除,也可以确保删除某个文件夹。这是因为我不希望其他开发人员在将来意外禁用该功能。或者我就此而言。

有什么想法吗?我在这里看到了一些类似的问题,但似乎没有任何东西与我正在使用的Visual Studio 2010相关。

2 个答案:

答案 0 :(得分:3)

(我假设您正在使用Visual Studio 2010中的发布配置文件w / Azure SDK或Visual Studio 2012 RTM。如果不是,请在项目根目录中创建一个名为ProjectName.wpp.targets的MSBuild文件并放入相反的内容)

您可以通过在发布配置文件中设置<SkipExtraFilesOnServer>true</SkipExtraFilesOnServer>来禁用所有形式的删除(相当于您提到的复选框)。

要跳过特定目录,对此问题的评论意味着您可以使用以下语法:

<ItemGroup>
  <ExcludeFoldersFromDeployment Include="FolderName" />
</ItemGroup>

但我以前从未见过它并且没有测试过它。如果不这样做,您可以指定显式的跳过规则。这里会跳过“FolderName” - 请记住AbsolutePath是正则表达式:

<MsDeploySkipRules Include="SkipFolderName">
  <SkipAction>Delete</SkipAction>
  <ObjectName>dirPath</ObjectName>
  <AbsolutePath>FolderName$</AbsolutePath>
</MsDeploySkipRules>

注意:除非您将UseMsDeployExe设置为true

,否则使用Visual Studio时跳过规则不起作用some scenarios

答案 1 :(得分:2)

您可以使用msdeploy.exe.configsettings文件在目标计算机上设置特定规则,同一文件夹中还有一个msdeploy.exe.configsettings.example文件。该文件位于%程序文件%\ IIS \ Microsoft Web Deploy - 文件夹中,请参阅Web Deploy Rules

您可以在此设置规则和skipDirectives,并启用它们是否默认,以便获得预期的默认行为。