Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class DynatracePurePathHeaderAppender : IClientMessageInspector, IEndpointBehavior
- {
- object IClientMessageInspector.BeforeSendRequest(ref Message request, IClientChannel channel)
- {
- var dynaHeader = MessageHeader.CreateHeader("Action", "ns.yellowbook.jeff", "dynatrace",false);
- request.Headers.Add(dynaHeader);
- return null;
- }
- void IClientMessageInspector.AfterReceiveReply(ref Message reply, object correlationState)
- {
- return;
- }
- public void Validate(ServiceEndpoint endpoint){}
- public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters){}
- public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher){}
- public void ApplyClientBehavior(ServiceEndpoint endpoint, ClientRuntime clientRuntime)
- {
- clientRuntime.MessageInspectors.Add(this);
- }
- }
- public class DynatracePurePathHeaderAppenderElement : BehaviorExtensionElement
- {
- protected override object CreateBehavior()
- {
- return new DynatracePurePathHeaderAppender();
- }
- public override Type BehaviorType
- {
- get { return typeof(DynatracePurePathHeaderAppender); }
- }
- }
- HttpRequestMessageProperty hrmp = new HttpRequestMessageProperty();
- //Set hrmp.Headers, then:
- request.Properties.Add(HttpRequestMessageProperty.Name, hrmp);
- var httpHeader = reply.Properties["httpResponse"] as HttpResponseMessageProperty;
- httpHeader.Headers.Add("my Custom Header", "My Value");
- Public Class AuthenticationHeader
- Implements IClientMessageInspector
- Private itsUser As String
- Private itsPass As String
- Public Sub New(ByVal user As String, ByVal pass As String)
- itsUser = user
- itsPass = pass
- End Sub
- Public Sub AfterReceiveReply(ByRef reply As Message, correlationState As Object) Implements IClientMessageInspector.AfterReceiveReply
- Console.WriteLine("Received the following reply: '{0}'", reply.ToString())
- End Sub
- Public Function BeforeSendRequest(ByRef request As Message, channel As IClientChannel) As Object Implements IClientMessageInspector.BeforeSendRequest
- Dim hrmp As HttpRequestMessageProperty = request.Properties("httpRequest")
- Dim encoded As String = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(itsUser + ":" + itsPass))
- hrmp.Headers.Add("Authorization", "Basic " + encoded)
- Return request
- End Function
- End Class
- Public Class AuthenticationHeaderBehavior
- Implements IEndpointBehavior
- Private ReadOnly itsUser As String
- Private ReadOnly itsPass As String
- Public Sub New(ByVal user As String, ByVal pass As String)
- MyBase.New()
- itsUser = user
- itsPass = pass
- End Sub
- Public Sub AddBindingParameters(endpoint As ServiceEndpoint, bindingParameters As BindingParameterCollection) Implements IEndpointBehavior.AddBindingParameters
- End Sub
- Public Sub ApplyClientBehavior(endpoint As ServiceEndpoint, clientRuntime As ClientRuntime) Implements IEndpointBehavior.ApplyClientBehavior
- clientRuntime.MessageInspectors.Add(New AuthenticationHeader(itsUser, itsPass))
- End Sub
- Public Sub ApplyDispatchBehavior(endpoint As ServiceEndpoint, endpointDispatcher As EndpointDispatcher) Implements IEndpointBehavior.ApplyDispatchBehavior
- End Sub
- Public Sub Validate(endpoint As ServiceEndpoint) Implements IEndpointBehavior.Validate
- End Sub
- End Class
- Dim binding As New WebHttpBinding(WebHttpSecurityMode.Transport)
- binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None
- ChlFactory = New WebChannelFactory(Of IMyServiceContract)(binding, New Uri(url))
- ChlFactory.Endpoint.Behaviors.Add(New WebHttpBehavior())
- ChlFactory.Endpoint.Behaviors.Add(New AuthenticationHeaderBehavior(user, pass))
- Channel = ChlFactory.CreateChannel()
Add Comment
Please, Sign In to add comment