Śledzę this article i stworzyli MyMessageInspector
i MyEndPointBehavior
clases jak poniżej:Jak dodać niestandardową usługę EndPointBehavior do pliku web.config usługi?
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
}
Jak dodać MyEndPointBehavior do pliku web.config?
Dodałem poniższych rozszerzeń:
<extensions>
<behaviorExtensions>
<add name="myMessageInspector" type="MessageInspectorProject.MyEndPointBehavior, MessageInspectorProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</behaviorExtensions>
</extensions>
Ale gdy próbuję użyć go poniżej, narzeka:
<serviceBehaviors>
<behavior>
<myMessageInspector/>
Jego skarżą się jak poniżej:
Nieprawidłowy element w konfiguracji. Rozszerzenie "myMessageInspector" nie pochodzi z właściwego typu podstawowego rozszerzenia "System.ServiceModel.Configuration.BehaviorExtensionElement".
Jak dodać MyEndPointBehavior
do web.config?
Wielką odnośnik do tego, co starasz się zrobić: http://weblogs.asp.net/paolopia/archive/2007 /08/23/writing-a-wcf-message-inspector.aspx – Tanner
Czy próbowałeś używać tego znacznika: –
Tanner
Komunikat o błędzie mówi wszystko, twój niestandardowy typ rozszerzenia musi dziedziczyć po 'System.ServiceModel.Configuration.BehaviorExtensionElement '. Możesz albo utworzyć nową klasę, albo utworzyć z niej 'MyMessageInspector'. Musisz zastąpić elementy 'CreateBehavior()' i 'BehaviorType'. 'BehaviorType' zwróci' typeof (MyEndPointBehavior) 'a' CreateBehavior() 'zwróci instancję tej klasy. – Vasea