如何:使用 WorkflowServiceHost 配置永久性

本文介绍如何使用配置文件配置 SQL 工作流实例存储功能,以便对 WorkflowServiceHost 中承载的工作流启用永久性。 使用 SQL 工作流实例存储功能之前,必须创建用于保存工作流实例的 SQL 数据库。 有关详细信息,请参阅如何:对工作流和工作流服务启用 SQL 持久性

在配置中配置 SQL 工作流实例存储

  1. 可以通过 SqlWorkflowInstanceStoreBehavior(一个用于通过 XML 配置更改设置的服务行为)配置 SQL 工作流实例存储的属性。 下面的配置示例演示如何使用配置文件中的 <sqlWorkflowInstanceStore> 行为元素来配置 SQL 工作流实例存储。

    <serviceBehaviors>
        <behavior name="">
            <sqlWorkflowInstanceStore
                 connectionString="...;Async=true"
                 instanceEncodingOption="GZip | None"
                 instanceCompletionAction="DeleteAll | DeleteNothing"
                 instanceLockedExceptionAction="NoRetry | SimpleRetry | AggressiveRetry"
                 hostLockRenewalPeriod="00:00:30"
                 runnableInstancesDetectionPeriod="00:00:05">
            </sqlWorkflowInstanceStore>
        </behavior>
    </serviceBehaviors>
    

    有关如何配置 SQL 工作流实例存储的详细信息,请参阅如何:对工作流和工作流服务启用 SQL 持久性。 有关 <sqlWorkflowInstanceStore> 行为元素的各种设置的详细信息,请参阅 SQL 工作流实例存储

    注意

    上面的配置示例使用的是简化配置。 有关详细信息,请参阅简化配置

在代码中配置 SQL 工作流实例存储

  1. 可以通过 SqlWorkflowInstanceStoreBehavior(一个用于通过代码更改设置的服务行为)配置 SQL 工作流实例存储的属性。 下面的示例演示如何在代码中使用 SqlWorkflowInstanceStoreBehavior 行为元素来配置 SQL 工作流实例存储。

    host.Description.Behaviors.Add(new SqlWorkflowInstanceStoreBehavior
    {
       ConnectionString = "...;Async=true",
       InstanceEncodingOption = "GZip | None",
       InstanceCompletionAction = "DeleteAll | DeleteNothing",
       InstanceLockedExceptionAction = "NoRetry | SimpleRetry | AggressiveRetry",
       HostLockRenewalPeriod = new TimeSpan(00, 00, 30),
       RunnableInstancesDetectionPeriod = new TimeSpan(00, 00, 05)
    });
    

    有关如何配置 SQL 工作流实例存储的详细信息,请参阅如何:对工作流和工作流服务启用 SQL 持久性。 有关 SqlWorkflowInstanceStoreBehavior 行为元素的各种设置的详细信息,请参阅 SQL 工作流实例存储

    注意

    上面的配置示例使用的是简化配置。 有关详细信息,请参阅简化配置

    有关如何以编程方式配置持久性的示例,请参阅如何:对工作流和工作流服务启用持久性

另请参阅