服务器端
public CommonService()
{
int index = OperationContext.Current.IncomingMessageHeaders.FindHeader("ContextObject", "http://tempuri.org");
if (index >= 0)
{
string strContextObjects = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>(index);
string[] contextObjects = strContextObjects.Split('&');
string userId = contextObjects[0];
string userName = contextObjects[1];
string ipAddress = contextObjects[2];
string securityCode = contextObjects[3];
contextObject = new ContextObject()
{
UserId = userId,
UserName = userName,
IpAddress = ipAddress,
SecurityCode = securityCode
};
}
else
throw new SecurityTokenException("发现未知身份的访问,系统已主动拒绝!");
}
客户端
public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, IClientChannel channel)
{
string strContextObjects = ContextInfo.UserId + "&" + ContextInfo.UserName + "&" + ContextInfo.IpAddress +
"&" + ContextInfo.SecurityCode;
MessageHeader clientHeader = MessageHeader.CreateHeader("ContextObject", "http://tempuri.org", strContextObjects);
request.Headers.Add(clientHeader);
return null;
}