Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式将Umbraco数据从开发站点迁移到实时站点_Umbraco - Fatal编程技术网

以编程方式将Umbraco数据从开发站点迁移到实时站点

以编程方式将Umbraco数据从开发站点迁移到实时站点,umbraco,Umbraco,我的情况是,我负责向Umbraco提供应用程序或扩展,使后端用户能够将其在开发站点上的更改迁移到实时站点。这种迁移应该每天发生一次,或者在后端用户按下后端按钮时发生 我知道Umbraco在快递包裹中提供了这一点,但显然它在这种情况下效果不够好 还有一些细节: 开发站点和实时站点都位于同一台服务器上,它们的数据库也位于同一台服务器上。数据只需从一个文件夹传输到另一个文件夹,数据库中的表也是如此 正如我所看到的,有两种方法可以做到这一点 1) 您需要进行一次完整的迁移,基本上是对实时数据库进行拆卸,

我的情况是,我负责向Umbraco提供应用程序或扩展,使后端用户能够将其在开发站点上的更改迁移到实时站点。这种迁移应该每天发生一次,或者在后端用户按下后端按钮时发生

我知道Umbraco在快递包裹中提供了这一点,但显然它在这种情况下效果不够好

还有一些细节:

开发站点和实时站点都位于同一台服务器上,它们的数据库也位于同一台服务器上。数据只需从一个文件夹传输到另一个文件夹,数据库中的表也是如此

正如我所看到的,有两种方法可以做到这一点

1) 您需要进行一次完整的迁移,基本上是对实时数据库进行拆卸,并将其更新到新版本。然后,您还可以复制所有需要的文件

2) 您创建了一个包,其中包含您在开发人员站点上更改的文档类型等,并将该包加载到活动站点上

1号的问题是,似乎你必须在完成传输后重新发布整个站点。据我所知,你可以用一个Web服务来实现这一点,但如果我可以用一个控制台应用程序来代替,我会更喜欢它

我的问题是:

有没有办法以编程方式创建包并以相同的方式加载它们,或者以编程方式实现此迁移的最佳方式是什么

如果您有任何建议,我将不胜感激,因为我有点不知所措:)

编辑

实际上,我最终做了一个完整的镜像,即使用Robocopy传输文件夹中所有已更改的文件,然后使用SQL命令备份开发站点,然后使用RESTORE SQL命令将其恢复到实时数据库中

需要在SQL命令中执行一些设置,但它运行平稳,根据已更改的文件数,完成传输需要花费10秒


最后一件事。如果希望更改可见,则需要重新加载Umbraco。您可以通过手动修改web.config文件或通过编程方式设置其LastWriteTime来完成此操作。

您始终可以创建一个用户控件,该控件将为您处理整个网站的重新发布,您可以从控制台应用程序调用它

你们也可以加入这个项目,这确实足够好了(不管怎样,对于功能,我自己还并没有测试过)

另一种方法是将所有节点作为xml提要提供,并使用的调度功能自动迁移节点


这是一个艰难的选择,有很多选择,但还没有银弹。我很希望Courier 2能够完美地实现这一点,我急切地等待它的发布。

但您如何处理数据库中节点的迁移?如果其他人正在查看答案,您需要跟踪新页面的id,这样您就不会意外发布您不想发布的页面(如果存在)。您可以从两个相同的数据库开始。然后,当您将其中一个表放入活动环境中时,将所有将更改的表(抱歉,不知道哪些表将更改)重新设定种子,以一个非常高的种子开始。然后可以覆盖现有内容(相同ID)可以复制源数据库上的新内容,而不会干扰现有内容。仅供参考:我一直在寻找银弹,这是我得到的最接近的结果,在Umbraco中很难做到这一点,我不知道有多少人有成功的自动化策略。信使2应该让这一切变得非常简单。让我们祈祷它能缓解我们的问题,呵呵。不管怎样,谢谢你的回答,我会把它当作我的问题的正确答案,并标记为: