代码之家  ›  专栏  ›  技术社区  ›  TrueWill

在Web.config中添加工作流扩展

  •  2
  • TrueWill  · 技术社区  · 15 年前

    部署到IIS或AppFabric时,如何在Web.config中配置自定义工作流扩展(如PersistenceParticipant子体)?(对于WF 4)

    1 回复  |  直到 15 年前
        1
  •  5
  •   Maurice    15 年前

    您可以在活动的CacheMetadata中或通过服务行为执行此操作,如下所示。

    创建一个IServiceBehavior来添加扩展,创建一个behaviorextension元素来加载IServiceBehavior。

    public class MyExtensionElement : BehaviorExtensionElement
    {
        public override Type BehaviorType
        {
            get 
            { 
                return typeof(MyExtensionBehavior); 
            }
        }
        protected override object CreateBehavior()
        {
            return new MyExtensionBehavior();
        }
    }
    
    public class MyExtensionBehavior : IServiceBehavior
        {
        public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
        {
            var host = (WorkflowServiceHost)serviceHostBase;
            host.WorkflowExtensions.Add<MyExtension>(() => new MyExtension());
        }
    }
    

    接下来在配置中将其注册为behaviorExtensions并在服务行为中使用

    <system.serviceModel>
        <extensions>
            <behaviorExtensions>
                <add name="myExtension"
                     type="MyWorkflowService.MyExtensionElement, MyWorkflowService"/>
            </behaviorExtensions>
        </extensions>
        <behaviors>
            <serviceBehaviors>
                <behavior>
                    <myExtension/>
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>