WCF: как добавить свой пользовательский ServiceBehavior в конфигурацию WCF - PullRequest
2 голосов
/ 01 июня 2011

Привет, у меня есть свой собственный ServiceBehavior:

public class StructureMapServiceBehavior : IServiceBehavior
    {
        public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
        {
            foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers)
            {
                ChannelDispatcher cd = cdb as ChannelDispatcher;
                if (cd != null)
                {
                    foreach (EndpointDispatcher ed in cd.Endpoints)
                    {
                        ed.DispatchRuntime.InstanceProvider =
                            new StructureMapInstanceProvider(serviceDescription.ServiceType);
                    }
                }
            }
        }

        public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
        {
        }

        public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
        {
        }

    }

Как мне добавить его в App.config с помощью инструмента настройки WCF?

: WCF configuration tool

Ответы [ 2 ]

3 голосов
/ 01 июня 2011

Создайте класс, который наследуется от BehaviorExtensionElement:

public class StructureMapServiceBehaviorElement : BehaviorExtensionElement
{
    public override Type BehaviorType
    {
        get { return typeof(StructureMapServiceBehavior ); }
    }

    protected override object CreateBehavior()
    {
        return new StructureMapServiceBehavior ();
    }
}

Затем зарегистрируйте ваше расширение в файле конфигурации:

<behaviorExtensions>
    <add name="timeService" type="YourAssembly.StructureMapServiceBehaviorElement ,
YourAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>

Когда это будет сделано, вы можете использовать ваше расширение как любое другое.

РЕДАКТИРОВАТЬ: Чтобы сделать это с помощью инструмента конфигурации, это похоже. После того, как класс выше создан, зарегистрируйте свое поведение в разделе расширений инструмента настройки WCF (advanced-> extensions-> extension элемента extension)

1 голос
/ 01 июня 2011

Вы должны создать собственный класс, производный от BehaviorExtensionElement, который будет отвечать за создание вашего собственного поведения. Вот пример с шагами, необходимыми для добавления такого поведения в файл конфигурации (расширение должно быть зарегистрировано сначала в разделе behaviorsExtensions).

В инструменте настройки, я думаю, вам сначала нужно зарегистрировать расширение в Advanced> Extensions, и после этого вы, вероятно, сможете использовать это поведение службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...