【发布时间】:2019-12-13 01:35:08
【问题描述】:
我正在为我的应用程序使用 WCF 服务。我有三个函数 - Add、GetList、GetSingle。
要在客户端创建服务,我使用以下代码:
Public Shared Function GetService(ByRef oScope As OperationContextScope) As XService.XServiceClient
Dim oService As New XService.XServiceClient
oScope = New OperationContextScope(oService.InnerChannel)
oService.Open()
Dim oMessageHeader As System.ServiceModel.Channels.MessageHeader = MessageHeader.CreateHeader("SecurityContext", String.Empty, AuthenticationModule.GetAuthenticationTicketToService)
OperationContext.Current.OutgoingMessageHeaders.Add(oMessageHeader)
Return oService
End Function
AuthenticationModule.GetAuthenticationTicketToService 将返回一个包含 GUID 的字符串。
在服务器端,我正在使用以下方法检索数据:
Public Function GetTokenValue() As String
If OperationContext.Current.IncomingMessageHeaders.FindHeader("SecurityContext", "") <> -1 Then
Return OperationContext.Current.IncomingMessageHeaders.GetHeader(Of String)("SecurityContext", "")
End If
Return ""
End Function
当我调用 Add 或 GetList 函数时,正在很好地检索传入的标头。但是,当我调用 GetSingle 函数时,传入的标头始终为空。请注意,在所有三种方法中都使用相同的代码来创建服务,以及检索所需的标头。
我对三个函数之一的行为与其他函数不同的原因感到迷茫,而正在执行相同的代码。无法检索信息的可能原因是什么?
【问题讨论】:
标签: .net vb.net wcf http-headers wcf-client