避免删除Azure Cloud Service发布上的文件

时间:2014-10-14 16:21:42

标签: c# asp.net .net azure azure-cloud-services

我将ASP.NET MVC应用程序托管为Azure Cloud Service。

我在新部署后删除了用户上传的图片时遇到问题。

上传的图片会保存到自定义特殊文件夹WebProject/UserFiles/MedicalCenterImages

下面我提供了我的项目文件夹结构。

Project folder structure

我发现并调查了几个与我的相关的问题

并弄清楚,我应该在.csproj文件中添加一个SkipDelete规则。

<Target Name="AddCustomSkipRules">
<Message Text="Adding Custom Skip Rules" />
<ItemGroup>
  <MsDeploySkipRules Include="SkipUserFilesFolder">
    <SkipAction>Delete</SkipAction>
    <ObjectName>filePath</ObjectName>
    <AbsolutePath>UserFiles</AbsolutePath>
  </MsDeploySkipRules>
</ItemGroup>
</Target>

但我不完全明白我应该编辑哪个文件? (MaxPatient.Web.csproj或MaxPatientCloudService.ccproj或任何其他文件)

我总是发布我的MaxPatientCloudService项目。

我将不胜感激任何帮助。

谢谢:)

4 个答案:

答案 0 :(得分:7)

Azure云服务部署通常(使用VIP交换到prod插槽的临时插槽)创建新的虚拟机(VM)。您只能计划实际MVC项目中的内容文件以部署到新VM。用户上传不会在部署后继续存在。您需要将上载的文件存储在Azure BLOB,数据库中或使用Azure网站而不是Cloud Service。

答案 1 :(得分:2)

每当您发布到Azure Cloud Service时,都会创建新VM。 如果我希望Azure不删除空文件夹,我通常会在文件夹中添加一个虚拟文件。

理想情况下,您希望惩罚分期。然后SWAP Staging with Production,以便最大限度地减少我们网站的停机时间。

此外,Azure Cloud Service中至少需要两个实例。一个实例无法访问其他实例中的文件夹。

  

上传的图片将保存到自定义特殊文件夹中   WebProject / UserFiles / MedicalCenterImages

对于方案,您需要在Blob Storage(或SQL Azure)中保存客户映像,以便所有实例都可以读取/写入映像。

注意: 当Azure回收实例时(无论出于何种原因),它会从原始上传的包中创建新的VM。因此,我们永远不应该将数据保存在Web服务器的文件夹中。

答案 2 :(得分:0)

转到发布设置 - &gt;展开文件发布选项 - &gt;并解开说明在目的地删除其他文件的框。

答案 3 :(得分:0)

我不确定这是否适用于持续部署,但是从VS手动部署的解决方案是将要保留的服务器文件放在App_Data文件夹中。

VS / Azure的标准发布设置允许您:

&#34;删除目的地的其他文件&#34; 和 &#34;排除App_Data文件夹中的文件&#34;

这意味着您可以清除项目中的冗余项目文件,而不会影响实时应用程序中特定的文件和数据

可能的缺点是限制公共访问App_Data以及将App_Data文件夹用于一般存储目的 - 另请参阅有关该问题的帖子。

Images that are in App_Data folder not shown in browser