Imports System.ServiceModel Imports System.ServiceModel.Channels Imports System.ServiceModel.Dispatcher Imports System.ServiceModel.Description Imports System.ComponentModel Public Class HttpUserAgentMessageInspector Implements IClientMessageInspector Private Const USER_AGENT_HTTP_HEADER As String = "user-agent" Private m_userAgent As String Public Sub New(ByVal userAgent As String) Me.m_userAgent = userAgent End Sub #Region "IClientMessageInspector Members" Public Sub AfterReceiveReply(ByRef reply As System.ServiceModel.Channels.Message, ByVal correlationState As Object) Implements IClientMessageInspector.AfterReceiveReply End Sub Public Function BeforeSendRequest(ByRef request As System.ServiceModel.Channels.Message, ByVal channel As System.ServiceModel.IClientChannel) As Object Implements IClientMessageInspector.BeforeSendRequest Dim httpRequestMessage As HttpRequestMessageProperty Dim httpRequestMessageObject As New Object If request.Properties.TryGetValue(HttpRequestMessageProperty.Name, httpRequestMessageObject) Then httpRequestMessage = TryCast(httpRequestMessageObject, HttpRequestMessageProperty) If String.IsNullOrEmpty(httpRequestMessage.Headers(USER_AGENT_HTTP_HEADER)) Then httpRequestMessage.Headers(USER_AGENT_HTTP_HEADER) = Me.m_userAgent End If Else httpRequestMessage = New HttpRequestMessageProperty() httpRequestMessage.Headers.Add(USER_AGENT_HTTP_HEADER, Me.m_userAgent) request.Properties.Add(HttpRequestMessageProperty.Name, httpRequestMessage) End If Return Nothing End Function #End Region End Class Public Class HttpUserAgentEndpointBehavior Implements IEndpointBehavior Private m_userAgent As String Public Sub New(ByVal userAgent As String) Me.m_userAgent = userAgent End Sub #Region "IEndpointBehavior Members" Public Sub AddBindingParameters(ByVal endpoint As ServiceEndpoint, ByVal bindingParameters As System.ServiceModel.Channels.BindingParameterCollection) Implements IEndpointBehavior.AddBindingParameters End Sub Public Sub ApplyClientBehavior(ByVal endpoint As ServiceEndpoint, ByVal clientRuntime As System.ServiceModel.Dispatcher.ClientRuntime) Implements IEndpointBehavior.ApplyClientBehavior Dim inspector As New HttpUserAgentMessageInspector(Me.m_userAgent) clientRuntime.ClientMessageInspectors.Add(inspector) End Sub Public Sub ApplyDispatchBehavior(ByVal endpoint As ServiceEndpoint, ByVal endpointDispatcher As System.ServiceModel.Dispatcher.EndpointDispatcher) Implements IEndpointBehavior.ApplyDispatchBehavior End Sub Public Sub Validate(ByVal endpoint As ServiceEndpoint) Implements IEndpointBehavior.Validate End Sub #End Region End Class