【问题标题】:Adding IClientMessageInspector globally to any service reference将 IClientMessageInspector 全局添加到任何服务引用
【发布时间】:2017-09-20 16:22:04
【问题描述】:

我有一个包含两个独立项目的 .net 解决方案, 一个是类库,另一个是 Web 应用程序。

我所有的服务引用都放在我的类库项目中。以及所有以编程方式完成的绑定和端点配置。

在我的 Web 应用程序中,我通过阅读此链接添加了 IClientMessageInspector 和 BehaviorExtensionElement。 How to: Inspect or Modify Messages on the Client

我不想从我的类库中添加 dbcontext 访问,并且我的所有 db 操作都在 Web 应用程序项目中完成。

现在的问题是我想记录我的类库中的每个传出服务调用,并且我想全局配置它。 (登录到数据库)

对于旧式网络参考,我可以添加如下图所示的 Soap 扩展,并使用 TraceExtention 类记录所有调用。

我需要使用服务引用来获得相同的能力。

【问题讨论】:

    标签: c# .net wcf soap-client service-reference


    【解决方案1】:

    您可以通过向 web.config 添加行为扩展来对 WCF 执行相同的操作。

    <system.serviceModel>
     <behaviors>
          <endpointBehaviors>
            <behavior name="ClientBehavior">
              <ClientEndpointBehavior />
            </behavior>
          </endpointBehaviors>
        </behaviors>
        <extensions>
          <behaviorExtensions>
            <add name="ClientEndpointBehavior" type="Custom.WCFMessageInspector, Custom" />
          </behaviorExtensions>
        </extensions>
    </system.serviceModel>
    

    1- Custom.WCFMessageInspector 是您的客户端检查代码所在的位置。

    2- 将 behaviorConfiguration="ClientBehavior" 添加到客户端端点。

    【讨论】:

    • 感谢您的回答是否可以为客户端使用默认行为,我的意思是 2-将 behaviorConfiguration="ClientBehavior" 添加到客户端端点。
    • 没有。它不会应用扩展名。行为必须设置为嵌入 的行为扩展元素的确切名称。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    相关资源
    最近更新 更多