65 lines
2.8 KiB
VB.net
65 lines
2.8 KiB
VB.net
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 |