`
wyf
  • 浏览: 436856 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

WCF-消息拦截 也可异常拦截

    博客分类:
  • WCF
 
阅读更多

 

说明:命名空间为:WcfServiceInterpector

1:新建继承自IDispatchMessageInspector的ServiceInterpector类

 

1 public class ServiceInterpector : IDispatchMessageInspector
 2     {
 3 
 4         #region IDispatchMessageInspector 成员
 5 
 6         public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel, System.ServiceModel.InstanceContext instanceContext)
 7         {
 8             ICSS.Plover.Log.LogRecorder.WriteInfo(new LogMessage("请求服务地址:" + request.Headers.To.AbsoluteUri + " 调用方法地址:" + request.Headers.Action));
 9             return "success";
10         }
11 
12         public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply, object correlationState)
13         {
14 
15         }
16 
17         #endregion
18     }

 

2:新建继承自BehaviorExtensionElement, IServiceBehavior的MyServiceBehavior类

1 public class MyServiceBehavior : BehaviorExtensionElement, IServiceBehavior
 2     {
 3 
 4         public override Type BehaviorType
 5         {
 6             get { return typeof(MyServiceBehavior); }
 7         }
 8         protected override object CreateBehavior()
 9         {
10             return new MyServiceBehavior();
11         }
12         #region IServiceBehavior Members
13         public void AddBindingParameters(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase, System.Collections.ObjectModel.Collection<ServiceEndpoint> endpoints, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
14         {
15         }
16         public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
17         {
18             foreach (ChannelDispatcher chDisp in serviceHostBase.ChannelDispatchers)
19             {
20                 foreach (EndpointDispatcher epDisp in chDisp.Endpoints)
21                 {
22                     epDisp.DispatchRuntime.MessageInspectors.Add(new ServiceInterpector());
23                 }
24             }
25         }
26         public void Validate(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
27         {
28         }
29         #endregion
30 
31     }

 3:配置文件中添加配置

(1)添加扩展

  <system.serviceModel>

<extensions>    

   <behaviorExtensions>

      <add name="Test" type="WcfServiceInterpector.MyServiceBehavior, WcfServiceInterpector, Version=1.0.0.0, Culture=neutral,              PublicKeyToken=null" />      

  </behaviorExtensions>  

 </extensions>

  </system.serviceModel>

说明:type="类完整名称, (程序集名称), Version=1.0.0.0, Culture=neutral,  PublicKeyToken=null" />

(2)使用扩展

<serviceBehaviors>    

   <behavior name="DefaultBehavior">        

 <serviceMetadata httpGetEnabled="true" httpGetUrl="" />      

   <serviceDebug includeExceptionDetailInFaults="true" />      

   <serviceThrottling maxConcurrentCalls="200" maxConcurrentInstances="200" maxConcurrentSessions="200" />                <dataContractSerializer maxItemsInObjectGraph="2147483647" />    

     <Test/>      <!--上文中扩展定义的名称-->  

   </behavior>      

 </serviceBehaviors>

 

 

 

分享到:
评论

相关推荐

    WCF消息拦截示例代码

    **WCF消息拦截示例代码**是针对Windows Communication Foundation(WCF)服务的一种技术实现,它允许我们在消息发送和接收时进行自定义处理。在WCF中,这种功能通常是通过实现`IDispatchMessageInspector`(服务端)...

    WCF消息拦截实现用户名验证

    客户端通过实现IClientMessageInspector接口,服务端通过实现IDispatchMessageInspector接口,来拦截消息。这种方式是通过扩展Behavior来加入拦截的,所以还需要分别实现IEndpointBehavior(客户端)和...

    WCF通过消息拦截进行身份验证

    3. **处理身份验证失败**:当消息拦截器检测到无效的身份验证信息时,可以抛出异常或者返回一个错误响应,从而阻止进一步的消息处理。 **优点与挑战** 利用消息拦截进行身份验证的优点在于其灵活性,可以实现复杂...

    WCF路由、免代理、实现AOP拦截源码附数据库

    在WCF中,实现AOP拦截器可以让我们在服务调用前后执行特定的逻辑,比如添加日志、验证权限或处理异常。 在本DEMO中,AOP拦截器被用来在消息传递过程中捕获和处理消息。这可能包括验证请求的合法性、添加操作日志、...

    访问WebService处理拦截开始访问的消息

    在.NET环境中,可以使用WCF(Windows Communication Foundation)的`IClientMessageInspector`或`IDispatchMessageInspector`接口来拦截消息。 5. **TestBeginRequestService** 根据提供的压缩包文件名...

    (15):扩展性-WCF课件

    WCF框架的设计充分考虑了可扩展性需求,允许开发者在多个层次上对其进行扩展,包括但不限于自定义`ServiceHost`的初始化、添加或修改服务、端点、契约的行为或操作级别、消息拦截等。 - **自定义ServiceHost初始化*...

    传说中的WCF(10)的例子代码

    本篇文章将聚焦于“传说中的WCF(10)的例子代码”,探讨如何在WCF中实现消息的检查、拦截以及修改SOAP消息内容。 1. **WCF简介** WCF是.NET Framework的一部分,它整合了.NET Remoting、Web Services、Message ...

    wcf扩展性例子

    **WCF(Windows Communication Foundation)**是微软推出的一种面向服务的架构,用于构建高度可配置、安全、可靠的分布式应用程序。WCF提供了丰富的扩展性机制,允许开发者根据需求自定义服务的行为、绑定、消息处理...

    WCF 全面解析

    - **消息安全**: 提供消息级别的安全,确保消息不被篡改或拦截。 - **传输安全**: 包括HTTPS等传输层安全机制。 5. **WCF与其他通信技术的比较** - **ASP.NET Web API**: 专为RESTful服务设计,更适合Web应用。 ...

    WCF教程WCF教程

    3. **可靠消息传递**:确保消息在不可靠的网络环境下也能成功传输。 4. **流式传输**:处理大量数据时,提高性能和效率。 5. **服务质量(QoS)**:延迟、吞吐量和可伸缩性的优化。 ### 第四部分:WCF扩展 这部分...

    捕获wcf请求执行时间

    2. **使用消息日志**:启用消息日志后,WCF将记录每个消息的详细信息,包括发送和接收的时间戳。这些日志可以用来计算请求处理的总时间。注意,为了保护敏感信息,可能需要配置过滤器以排除敏感数据。 3. **使用...

    wcf服务端与客户端的例子

    5. **异常处理**:WCF异常可以通过`FaultException`捕获,这允许服务端向客户端传递错误信息。 6. **安全性**:客户端可以配置身份验证、加密等安全选项,确保通信安全。例如,使用证书、用户名/密码等。 **三、...

    wcf高级编程

    WCF支持持久性队列,即使服务暂时不可用,消息也不会丢失。Reliable Messaging特性保证消息顺序并处理传输失败。 ### 10. 服务质量(QoS) WCF允许设置服务质量,如超时、重试策略、最大并发连接数,以优化服务性能...

    WCF.rar_ChannelFactory_WCF DynamicProxy_WCF 动态_wcf 动态调用_动态WCF

    它提供了多种机制,如消息交换、服务发现、安全性和事务处理,来帮助开发者构建可伸缩、可靠且安全的网络服务。在本示例中,`ChannelFactory` 和 `DynamicProxy` 是两个关键概念,它们与WCF中的动态调用密切相关。 ...

    用Windows窗口实现的一个简单的WCF

    通过调整配置、使用高级绑定、实现拦截器等,可以进一步提升WCF服务的质量和适应性。 总结,Windows窗口环境下实现的简单WCF服务展示了如何定义服务合同、数据合同,以及如何在客户端和服务器之间进行XML数据交换。...

    .net3.5 WCF实现jsonp

    在.NET 3.5中,Windows Communication Foundation (WCF) 并不直接支持JSONP,但可以通过自定义行为和服务行为来实现。以下是一篇关于如何在.NET 3.5 WCF中实现JSONP的详细解释。 首先,理解JSONP的工作原理是至关...

    Restful WCF调研.docx

    ### RESTful WCF实现概述 ...在.NET框架中,WCF (Windows Communication Foundation) 提供了一种灵活的方式来创建各种类型的服务,包括...同时,合理的异常处理和权限控制机制也是保证服务稳定性和安全性的关键因素。

    wcf入门笔记和程序运行分析

    WCF的运行机制基于拦截机制,通过通道栈实现。当客户端调用服务时,服务代理对象将调用参数序列化成消息,这些消息经过多个通道处理,包括传输、编码、会话管理和事务传播。最底层的通道通常是传输通道,如HTTP、TCP...

    带安全验证的Wcf服务

    在开发分布式应用程序时,Windows Communication Foundation (WCF) 是Microsoft提供的一种强大的框架,用于构建可互操作的、安全的、可靠的服务。本篇文章将深入探讨“带安全验证的Wcf服务”,以及如何实现这个功能...

Global site tag (gtag.js) - Google Analytics