Wcf 有没有办法通过配置将参数传递给自定义服务行为

Wcf 有没有办法通过配置将参数传递给自定义服务行为,wcf,servicebehavior,Wcf,Servicebehavior,我有多个托管在IIS中的WCF服务,我正在应用相同的自定义服务行为。我正在寻找一种通过配置将多个参数传递给行为的方法,例如在behaviorExtensions或behavior元素中 如果有帮助,我还将在ApplyDispatchBehavior中添加自定义消息检查器,因此我需要将参数传递给检查器: public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHo

我有多个托管在IIS中的WCF服务,我正在应用相同的自定义服务行为。我正在寻找一种通过配置将多个参数传递给行为的方法,例如在behaviorExtensions或behavior元素中

如果有帮助,我还将在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>));
        }
    }
}

仅在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>
这样很容易区分哪个设置属于哪个服务请注意键中的服务名称前缀,如果需要,还可以使用一些共享参数

如果您需要更复杂的结构,您可能希望为每个服务定义自定义配置部分,如下所示:


但这可能有点过分,这取决于您的需要和预期的灵活性。

仅在web.config中创建一个包含参数的配置部分是否有效?如果是这样的话,你可以在那里读取配置并应用它,如果参数是基本的,甚至可以使用appSettings。谢谢@PabloRomeo。这似乎是唯一的方法,所以我接受它作为答案。复杂的是,配置参数因服务而异,因此行为需要读取特定于该服务的配置。