0

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

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

1 回答 1

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

但这可能有点矫枉过正,具体取决于您的需求和预期的灵活性。

于 2015-01-05T17:00:52.927 回答