Есть ли способ передать параметры пользовательскому поведению службы через конфигурацию
У меня есть несколько служб 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
Но это может быть излишним, в зависимости от ваших потребностей и ожидаемой гибкости.