我在 Azure 上有一个带有 2 个应用程序和 1 个虚拟目录的 Web 角色。1 应用程序是一个后端,管理员可以在其中上传文件,这些文件存储在虚拟目录中(两个应用程序都可以访问该目录)。
每次我将新版本部署到 Azure 时,虚拟目录中所有上传的内容都会被删除——这是我不想要的!
那么如何在不删除所有用户生成的文件的情况下发布新版本呢?
我已经设法使用 WebDeploy 更新了应用程序。但这仅适用于“主”应用程序,而不是第二个应用程序(配置为虚拟应用程序)。
谢谢
我在 Azure 上有一个带有 2 个应用程序和 1 个虚拟目录的 Web 角色。1 应用程序是一个后端,管理员可以在其中上传文件,这些文件存储在虚拟目录中(两个应用程序都可以访问该目录)。
每次我将新版本部署到 Azure 时,虚拟目录中所有上传的内容都会被删除——这是我不想要的!
那么如何在不删除所有用户生成的文件的情况下发布新版本呢?
我已经设法使用 WebDeploy 更新了应用程序。但这仅适用于“主”应用程序,而不是第二个应用程序(配置为虚拟应用程序)。
谢谢
你不能。Web 角色在部署时重新创建。它也可能发生在硬件故障上,如果实例发生故障,Azure 会重新部署您的系统。重新部署一个干净的虚拟机,然后将您的应用程序部署到它。您永远不应该存储要保留在 Web 角色中的数据。您需要使用 blob 存储等来存储要保留的文件。
虚拟目录存储在每次升级时重新创建的“应用程序”分区上 - 有关更多信息,请参阅此内容。因此,虚拟目录文件夹不是存储您希望在升级期间保留的内容的正确位置。顺便说一句,“应用程序”分区只有 1 GB 的空间,其中一些空间用于存储您的应用程序二进制代码,因此您有时可能会发现自己处于“磁盘已满”的情况。
If you want to store some data which you don't mind sacrificing on rare occasions - like cached results - you may use "local resources" disk for that which will survive in-place upgrades and reboots. However it is not guaranteed to be preserved if your VM crashes - for such level of preservation you have to use persistent storage like blob storage for example.
由于您正在谈论虚拟目录并使用 Web 部署来更新通常的 Azure 包部署机制之外的应用程序,听起来您的体系结构/应用程序可能更适合持久 VM 角色而不是 Web 角色。这些目前仅在 Azure 上提供预览版。
http://www.windowsazure.com/en-us/home/scenarios/virtual-machines/
它们让您拥有可在回收利用中存活的持久存储。存储实际上由 blob 存储支持,但它看起来像 PVM 中的普通磁盘。