【问题标题】:Updating web app in ASP .NET CORE Replaces files, or Deletes files, how to keep file in app, when updating在 ASP .NET CORE 中更新 Web 应用程序替换文件或删除文件,更新时如何将文件保留在应用程序中
【发布时间】:2019-10-06 03:58:52
【问题描述】:

我在我的项目中使用 XML 文件,我在其中存储了一些信息。 问题是我的项目已经上线,并且我会定期更新它,当我发布新版本时,该文件会被替换或删除。

在 Visual Studio 中 如果我选择复制到输出目录:“不复制”,它会被删除,如果我选择:“总是复制”它会被更新,有没有办法更新应用程序,但让该文件保持原样。

我正在使用 Visual Studio 2017 社区,ASP .NET CORE 2.1,它通过 DOCKER 在 Linux 服务器上运行。

谢谢你的帮助!

-更新-

到(Prakash G.R.)anwser:

Folder profile does have this option 但是,不是Docker image,还是我错过了什么?,如果不是,我认为解决方案与 dockerfile 有关 卷?。

【问题讨论】:

  • 您为什么关心您的项目如何构建/部署此内容文件?如果这一天结束,您的 docker 容器中的应用程序将利用此文件。复制总是会创建一个新文件,是的......但它应该具有相同的内容。
  • @brandonhein 我认为您错过了 OP 使用它来存储实时数据的地方。因此,与部署的版本相比,应用程序正在对其进行更新,这会导致数据丢失。如果文件的内容从未改变,就没有问题,也不会问这个问题

标签: c# linux visual-studio docker .net-core


【解决方案1】:
  1. 在 Visual Studio 中选择“不复制”,以便 Web 部署将 不复制到服务器
  2. 在发布配置文件中,您需要取消选中“删除附加 “文件发布选项”下的“目标文件”选项。 否则,它将删除服务器上的文件。取消选中此项 选项将保留其他文件(未复制, 但存在于服务器上)将不受 Web Deploy 的影响

.

【讨论】:

  • 当作为图像发布到 docker 时,它不允许我进行那种配置,我会用图像更新 Q,也许我遗漏了一些东西,如果不是,我认为解决方案在 dockerfile 中的某个地方.
【解决方案2】:

我找到了解决方案。 您需要为此使用 Docker 卷。 我使用DigitalOcean 作为主机,所以我在我的液滴中添加了一个 space 卷,现在我正在尝试在 Digital Oceans 卷中获取 docker 卷,但我无法做到使用我的应用程序。我应该能够随心所欲地更新我的网络应用程序,并且它不会重置或删除批量文件。

简短的回答是使用 docker 卷,卷在容器之外运行,因此它们不会在更新时重置其中的文件。

不过,我无法在我的应用程序上运行 docker volume。我对此提出了另一个问题,请参阅Here

【讨论】:

    猜你喜欢
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2012-12-24
    • 2012-12-06
    相关资源
    最近更新 更多