[英]Passing a token to WCF service
我真的需要知道如何在不向我的所有合同添加额外参数的情况下将令牌传递给WCF服务,某些值就像一个数字,以便我以后可以在我的服务上使用它。
使用自定义标头解决此问题。
您可以为客户端分配自定义标头,如下所示:
IContextChannel contextChannel = (IContextChannel)myServiceProxy;
using (OperationContextScope scope = new OperationContextScope(contextChannel))
{
MessageHeader header = MessageHeader.CreateHeader("PlayerId", "", _playerId);
OperationContext.Current.OutgoingMessageHeaders.Add(header);
act(service);
}
在服务方面,您可以获得此值:
private long ExtractPlayerIdFromHeader()
{
try
{
var opContext = OperationContext.Current;
var requestContext = opContext.RequestContext;
var headers = requestContext.RequestMessage.Headers;
int headerIndex = headers.FindHeader("PlayerId", "");
long playerId = headers.GetHeader<long>(headerIndex);
return playerId;
}
catch (Exception ex)
{
this.Log.Error("Exception thrown when extracting the player id from the header", ex);
throw;
}
}
另请参阅此问题 ,了解如何通过配置文件设置自定义标头。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.