Wcf 在使用SqlInstanceStore时,我必须显式配置持久性和卸载设置吗?
我有一个自我托管的WF4服务,它利用SqlWorkflowInstanceStore。我是这样配置的:Wcf 在使用SqlInstanceStore时,我必须显式配置持久性和卸载设置吗?,wcf,workflow-foundation-4,Wcf,Workflow Foundation 4,我有一个自我托管的WF4服务,它利用SqlWorkflowInstanceStore。我是这样配置的: var behavior = new SqlWorkflowInstanceStoreBehavior(connStr); TimeSpan detectionPeriod = behavior.RunnableInstancesDetectionPeriod; behavior.InstanceCompletionAction = Instan
var behavior = new SqlWorkflowInstanceStoreBehavior(connStr);
TimeSpan detectionPeriod = behavior.RunnableInstancesDetectionPeriod;
behavior.InstanceCompletionAction = InstanceCompletionAction.DeleteNothing;
behavior.InstanceLockedExceptionAction = InstanceLockedExceptionAction.AggressiveRetry;
behavior.InstanceEncodingOption = InstanceEncodingOption.None;
host.Description.Behaviors.Add(behavior);
此外,在我的代码中,我明确地向主机添加IdleBehavior行为,以确保应用卸载。基本上,我不确定SqlInstanceStore在工作流卸载方面做了什么。它是自己管理的,还是我仍然需要添加IdleBehavior,如下所示:
// Idle behaviour
var idleBehavior = new WorkflowIdleBehavior();
host.Description.Behaviors.Add(idleBehavior);
提前感谢。WorkflowIdleBehavior将允许WorkflowServiceHost在工作流不活动时自动保留/卸载工作流。您不需要这样做,但它有助于扩展性。即使没有空闲行为,工作流状态也将在执行期间保存。谢谢Maurice。如果在执行过程中通过InstanceStore的内部管理将其保存,是否可以安全地假定它也会自动从内存中卸载工作流?否,状态将作为某些操作的结果保存,但不会从内存中卸载工作流实例。您需要使用空闲行为、关闭服务主机或使用控制端点显式地执行此操作。