我在Azure上拥有2个应用程序和1个虚拟目录的Web角色。 1应用程序是一个后端,管理员可以上传文件,这些文件存储在虚拟目录中(由两个应用程序访问)。
每次我将新版本部署到Azure时,虚拟目录中的所有上传内容都将被删除 - 这是我不想要的!
那么如何在不删除所有用户生成的文件的情况下发布新版本呢?
我已经设法使用WebDeploy更新应用程序。但这只适用于“主”应用程序,而不适用于第二个应用程序(配置为虚拟应用程序)。
由于
答案 0 :(得分:3)
你不能。在部署时重新创建Web角色。它也可能在硬件故障时发生,如果实例失败,azure会重新部署您的系统。重新部署干净的虚拟机,然后将应用程序部署到该虚拟机。您永远不应该存储要保留在Web角色上的数据。您需要使用blob存储等来存储要保留的文件。
答案 1 :(得分:2)
虚拟目录存储在每次升级时重新创建的“应用程序”分区上 - 有关详细信息,请参阅this。因此,虚拟目录文件夹不是存储您希望在升级期间保留的内容的正确位置。顺便说一句,“应用程序”分区只有1千兆字节的空间,其中一些用于存储应用程序二进制代码,因此您可能会在某个时刻发现自己处于“磁盘已满”状态。
如果您想存储一些您不介意在极少数情况下牺牲的数据(如缓存结果),您可以使用“本地资源”磁盘,以便在就地升级和重新启动后继续使用。但是,如果您的VM崩溃,则无法保证保留 - 对于此类保留,您必须使用持久存储,例如blob存储。
答案 2 :(得分:1)
由于您正在讨论虚拟目录并使用Web部署来更新常用Azure包部署机制之外的应用程序,因此听起来您的架构/应用程序可能更适合持久VM角色而不是Web角色。目前只在Azure上提供这些内容。
http://www.windowsazure.com/en-us/home/scenarios/virtual-machines/
它们让您拥有可以在回收中存活的持久存储。存储实际上由blob存储支持,但它看起来像PVM中的普通磁盘。