wcf 消息拦截
2011-05-17 18:35
218 查看
说明:命名空间为:WcfServiceInterpector
1:新建继承自IDispatchMessageInspector的ServiceInterpector类
MyServiceBehavior类
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>
1:新建继承自IDispatchMessageInspector的ServiceInterpector类
MyServiceBehavior类
public class MyServiceBehavior : BehaviorExtensionElement, IServiceBehavior { public override Type BehaviorType { get { return typeof(MyServiceBehavior); } } protected override object CreateBehavior() { return new MyServiceBehavior(); } #region IServiceBehavior Members public void AddBindingParameters(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase, System.Collections.ObjectModel.Collection<ServiceEndpoint> endpoints, System.ServiceModel.Channels.BindingParameterCollection bindingParameters) { } public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase) { foreach (ChannelDispatcher chDisp in serviceHostBase.ChannelDispatchers) { foreach (EndpointDispatcher epDisp in chDisp.Endpoints) { epDisp.DispatchRuntime.MessageInspectors.Add(new ServiceInterpector()); } } } public void Validate(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase) { } #endregion }
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:消息拦截与篡改
- 传说中的WCF(10):消息拦截与篡改
- 传说中的WCF(10):消息拦截与篡改
- 重温WCF之消息拦截与篡改(八)
- WCF消息拦截,利用消息拦截做身份验证服务
- 传说中的WCF(10):消息拦截与篡改
- WCF笔记(6)消息拦截与篡改
- 传说中的WCF(10):消息拦截与篡改
- WCF 学习总结5 -- 消息拦截实现用户名验证
- 传说中的WCF(10):消息拦截与篡改
- 通过定制行为拦截WCF消息
- (转)MFC鼠标单击消息拦截双击消息
- 化零为整WCF(16) - 消息队列(MSMQ - MicroSoft Message Queue)
- C#钩子本线程内消息拦截
- WCF后传系列(3):深入WCF寻址Part 3—消息过滤引擎
- 使用.net的跟踪诊断来记录wcf消息
- WCF后传系列(7):消息如何传递之绑定Part 2
- 为什么TMemo可以拦截复制粘贴消息而TRichEdit不能
- 如何让hook拦截到的按键消息区分大小写?