Добавление расширения рабочего процесса в Web.config - PullRequest
2 голосов
/ 17 ноября 2010

Как настроить собственное расширение рабочего процесса (например, потомок PersistenceParticipant) в Web.config при развертывании в IIS или AppFabric?(Для WF 4)

1 Ответ

5 голосов
/ 17 ноября 2010

Вы можете сделать это в CacheMetadata действия или через поведение службы следующим образом.

Создайте IServiceBehavior для добавления расширения и BehaviorExtensionElement для загрузки 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());
    }
}

Затем зарегистрируйте его в качестве поведенияExtensions в конфигурации и используйте в своем поведении службы

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