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

У меня есть несколько служб WCF, размещенных в IIS, к которым я применяю одинаковое поведение пользовательских служб. Я ищу способ передать несколько параметров поведению через конфигурацию, например, в BeelExsence или элементах поведения.

Если это помогает, я также добавляю специальный инспектор сообщений в ApplyDispatchBehavior, поэтому мне нужно будет передать параметры в инспектор:

public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
    foreach (ChannelDispatcher channelDispatcher in serviceHostBase.ChannelDispatchers)
    {
        foreach (EndpointDispatcher endpointDispatcher in channelDispatcher.Endpoints)
        {
            endpointDispatcher.DispatchRuntime.MessageInspectors.Add(
                    new ValidatingMessageInspector(<custom parameters>));
        }
    }
}

1 ответ

Решение

Будет ли допустимым создание раздела конфигурации в web.config с параметрами? Если это так, вы можете просто прочитать конфигурацию и применить ее, или даже просто использовать appSettings, если параметры являются базовыми.

Например, если у вас мало параметров базовых типов, возможно, простой подход может быть следующим:

<appSettings>
    <add key="Shared.CommonParameter" value="A value" />
    <add key="Service1.OneParameter" value="False" />
    <add key="Service1.AnotherParameter" value="Some Value" />
    <add key="Service2.ADifferentParameter" value="42" />
</appSettings>

Таким образом, было бы легко различить, какой параметр принадлежит какому-либо сервису (обратите внимание на префикс имени сервиса в ключе), а также при необходимости иметь несколько общих параметров.

Если вам нужно что-то более сложное по структуре, вы можете посмотреть определение пользовательских разделов конфигурации для каждого сервиса, как показано здесь: http://msdn.microsoft.com/en-us/library/2tw134k3%28v=vs.140%29.aspx

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

Другие вопросы по тегам