Deployment Azure持续集成覆盖应用程序数据,即使WebDeploy文件指定为;排除应用程序数据“; 我有一个Windows Azure网站,我已经与托管的Team Foundation Server建立了Azure的持续集成。我对本地副本进行更改,提交到TFS,然后将其发布到Azure。这太棒了,问题是我在~\App\u Data\文件夹中有一个Access数据库,当我签入Azure上的副本时,它会被覆盖

Deployment Azure持续集成覆盖应用程序数据,即使WebDeploy文件指定为;排除应用程序数据“; 我有一个Windows Azure网站,我已经与托管的Team Foundation Server建立了Azure的持续集成。我对本地副本进行更改,提交到TFS,然后将其发布到Azure。这太棒了,问题是我在~\App\u Data\文件夹中有一个Access数据库,当我签入Azure上的副本时,它会被覆盖,deployment,azure,web-deployment,azure-web-app-service,Deployment,Azure,Web Deployment,Azure Web App Service,我将web部署发布配置文件设置为“排除应用程序数据”,并将生成任务配置为使用web部署配置文件,现在它将删除我的~\App\u Data\文件夹 有没有一种方法可以配置Azure Continuous Integration以部署所有内容并保留应用程序数据?我在Visual Studio中使用“发布Web”工具,但我认为原则是相同的: 如果您在本地修改文件并发布,它将覆盖web上的任何内容 如果本地没有文件,但该文件存在于web上,则在发布后,该文件仍将存在于web上 默认情况下,App_D

我将web部署发布配置文件设置为“排除应用程序数据”,并将生成任务配置为使用web部署配置文件,现在它将删除我的~\App\u Data\文件夹


有没有一种方法可以配置Azure Continuous Integration以部署所有内容并保留应用程序数据?

我在Visual Studio中使用“发布Web”工具,但我认为原则是相同的:

  • 如果您在本地修改文件并发布,它将覆盖web上的任何内容
  • 如果本地没有文件,但该文件存在于web上,则在发布后,该文件仍将存在于web上
默认情况下,App_Data文件夹在这种行为中不会得到特殊处理。这是有道理的-如果您在本地修改了.aspx或.jpg文件,您会希望最新版本在web上发布,对吗

我还使用App_数据存储一些文件,我希望web服务器(ASP.NET代码)修改这些文件,并使其在web上保持最新

解决办法是:

  • 允许web发布上载应用程序_数据,无例外
  • 不要将要在web上修改的文件存储在App_数据(本地)中
  • 让web服务器专门负责创建和修改文件
  • 理想情况下,您不必更改任何代码,服务器可以在需要时创建一个空白文件来开始

    但是,如果您必须从某些内容开始,例如新的空白.mdf文件,则可以执行以下操作:

  • 在本地/源存储库中,创建App_Data/blank.mdf(这将是一个起点,而不是工作文件)
  • 在全局.asax中,修改“Apple PosikSt着手”,从空白启动文件中创建实际工作.MDF文件:

    // If the real file doesn't exist yet (first run),
    // then create it using a copy of the placeholder.
    // If it exists then we re-use the existing file.
    string real_file = HttpContext.Current.Server.MapPath("~/App_Data/working.mdf");
    if (!File.Exists(real_file))
        File.Copy(HttpContext.Current.Server.MapPath("~/App_Data/blank.mdf"), real_file);
    

  • 听起来你可以使用“跳过规则”,尽管我还没有尝试使用Azure。您可能会发现这些链接很有用:和@JasonHaley如前所述,我已将web部署设置为跳过App_数据文件夹,但问题是发布后,我没有App_数据文件夹,以前没有,也没有源代码管理中的文件夹。刚刚过去。这是一个巨大的痛苦,我希望我只是做错了什么,但我似乎不知道这是什么。