您的位置:首页 > 其它

wcf 消息拦截

2011-05-17 18:35 218 查看
说明:命名空间为:WcfServiceInterpector

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: