我在IIS中托管了多个WCF服务,我正在应用相同的自定义服务行为。我正在寻找一种方法来通过配置将几个参数传递给行为,例如在behaviorExtensions或行为元素中。
如果有帮助,我还在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>));
}
}
}
答案 0 :(得分:0)
只是在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
但这可能有点过分,取决于您的需求和预期的灵活性。