Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
.net 是否将WF4实例存储数据库从生产环境复制到开发环境?_.net_Workflow Foundation 4 - Fatal编程技术网

.net 是否将WF4实例存储数据库从生产环境复制到开发环境?

.net 是否将WF4实例存储数据库从生产环境复制到开发环境?,.net,workflow-foundation-4,.net,Workflow Foundation 4,将WF4中的实例存储数据库从生产服务器复制到开发服务器的正确方法是什么?我们在AppFrand和IIS上使用Windows工作流基础4的应用程序。我们有一台装有SQL Server 2008 R2的机器,它托管我们的生产环境实例存储数据库,还有一台装有SQL Server 2008 R2的单独机器,它托管我们的开发环境实例存储数据库。现在,我们需要将我们在生产环境中的确切状态复制到开发环境中。对于简单的业务数据库,我只是要求我们的数据中心备份开发业务数据库(Oracle server),然后用生

将WF4中的实例存储数据库从生产服务器复制到开发服务器的正确方法是什么?我们在AppFrand和IIS上使用Windows工作流基础4的应用程序。我们有一台装有SQL Server 2008 R2的机器,它托管我们的生产环境实例存储数据库,还有一台装有SQL Server 2008 R2的单独机器,它托管我们的开发环境实例存储数据库。现在,我们需要将我们在生产环境中的确切状态复制到开发环境中。对于简单的业务数据库,我只是要求我们的数据中心备份开发业务数据库(Oracle server),然后用生产数据库的副本(也有单独的机器)完全替换开发业务数据库。我想也许同样的方法也可以很容易地用于我们的WF4实例存储数据库

但事实证明并非如此。复制后,在开发环境中运行应用程序,每当它尝试恢复实例书签或调用作为已启动工作流一部分的实例操作时,我们都会在标识符为“[guid]的服务实例上获得“操作”[operation name]”“此时无法执行。请确保以正确的顺序执行操作,并且使用中的绑定提供有序传递保证”异常消息

另一方面,如果我们开始一个新的工作流程,它工作正常,可以毫无困难地继续到最后。通过简单地查看System.Activities.DurableInstances.InstanceTable,在我看来,在复制之后,以前的工作流实例无法正确识别,WF4试图启动新实例,这导致了“操作顺序不正确”的情况。例如,这些新创建的实例与从生产环境复制的实例中的ServiceDeploymentId非常不同。但是我对WF4的经验实在是太少了,而且对于正在发生的事情我几乎一无所知。(在创建此帖子之前,我确实从StackExchange和其他来源搜索了答案。)

我们如何创建生产WF4实例存储的副本,一旦在开发服务器中,它将在开发环境中与我们的应用程序一起工作,就像具有与生产相同的应用程序状态一样?谢谢

请帮忙(2013年9月10日) 你好。我想知道为什么到目前为止还没有人对这篇文章发表评论。事实上,使用生产环境中的数据更新开发或QA环境中的数据是非常常见的事情。我几乎可以肯定的是,WF4工作流也在定期地以某种方式完成这项工作。将WF4工作流的状态从一个数据库服务器(生产)复制到另一个数据库服务器(QA或开发),以便在QA或开发环境中运行的应用程序可以“获得”与生产服务器相同的应用程序状态,从那里可以继续推进和使用从生产中复制的工作流,但在其自身的环境中,可以无缝地进行。请,如果有人已经这样做了,或者知道如何去做,并且非常乐意为这个问题提供帮助,我们将不胜感激。感谢和问候。

在这里给了我答案,我问的问题与StackOverflow的帖子中的问题完全相同

首先,他问道:“工作流服务(xalmx文件)的[IIS]路径在生产中与在开发中相同吗?如果路径不同,因为虚拟目录不同,那么WorkflowHostType列也不同,这可能会导致问题。”

在让他知道IIS站点名称在生产环境和开发环境中实际上是不同的,尽管工作流服务的其他路径是相同的,他回答说:“两个[IIS站点]必须具有相同的名称。我刚刚对其进行了测试。我在IIS中更改了站点名称,突然WorkflowHostType发生了更改。因此空闲的持久化工作流将不再加载。”然后他补充道:“请看这篇文章,它解释了WorkflowHostType是如何生成的:”

这就成功了!在我的例子中,我只需要在开发环境中重命名IIS站点名称,以便与生产环境中的IIS站点名称完全匹配。一旦我们的数据中心使用生产数据库服务器中实例存储的副本更新了开发数据库服务器中的WF4实例存储,开发应用程序将正确获取与生产应用程序相同的WF4状态,因为复制的工作流已正确识别和加载。最后,我们可以将该系统的业务数据和WF4状态从生产环境复制到开发环境中,并在不接触生产数据的情况下调查生产问题

正如Jesús帮助我理解的那样,原因是:如果要在这些应用程序之间(在不同的环境中)复制WF4实例存储数据库,则承载WF4工作流服务(.xamlx文件)的IIS应用程序的完整路径必须完全相同,包括IIS站点名称,因为显然,服务文件名,站点名称和路径都是WorkflowHostType列值计算的一部分。这样,应用程序作为每个空闲持久化工作流的工作流主机类型查找的值将与复制的实例存储数据库中System.Activities.DurableInstance.InstanceTable的WorkflowHostType列中的相应值匹配,允许系统从复制的实例存储数据库中的数据正确识别并重新激活这些工作流

我希望这些信息能帮助其他人经历我经历过的同样情况。如果你认为这个答案需要进一步澄清,请