【发布时间】:2013-03-16 05:41:05
【问题描述】:
我已关注this article 并创建了MyMessageInspector 和MyEndPointBehavior 分类如下:
public class MyMessageInspector : IDispatchMessageInspector
{
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
Console.WriteLine("Incoming request: {0}", request);
return null;
}
public void BeforeSendReply(ref Message reply, object correlationState)
{
}
}
public class MyEndPointBehavior : IEndpointBehavior
{
#region IEndpointBehavior Members
public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
{
}
public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
{
}
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
ChannelDispatcher channelDispatcher = endpointDispatcher.ChannelDispatcher;
if (channelDispatcher != null)
{
foreach (EndpointDispatcher ed in channelDispatcher.Endpoints)
{
ed.DispatchRuntime.MessageInspectors.Add(new MyMessageInspector());
}
}
}
public void Validate(ServiceEndpoint endpoint)
{
}
#endregion
}
如何将 MyEndPointBehavior 添加到 web.config?
我添加了以下扩展:
<extensions>
<behaviorExtensions>
<add name="myMessageInspector" type="MessageInspectorProject.MyEndPointBehavior, MessageInspectorProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</behaviorExtensions>
</extensions>
但是当我尝试在下面使用它时,它会抱怨:
<serviceBehaviors>
<behavior>
<myMessageInspector/>
它的抱怨如下:
配置中的元素无效。扩展“myMessageInspector”不是从正确的扩展基类型“System.ServiceModel.Configuration.BehaviorExtensionElement”派生的。
如何在 web.config 中添加MyEndPointBehavior?
【问题讨论】:
-
你想要做的事情的好链接:weblogs.asp.net/paolopia/archive/2007/08/23/…
-
您是否尝试过使用此标签:
-
错误信息说明了一切,您的自定义扩展类型必须继承自
System.ServiceModel.Configuration.BehaviorExtensionElement。您可以创建一个新类,或者使MyMessageInspector从中派生。您必须覆盖CreateBehavior()和BehaviorType成员。BehaviorType将返回typeof(MyEndPointBehavior),CreateBehavior()将返回此类的一个实例。