求助一个WCF的问题
基于SOA架构的系统是由多个服务组成的,当客户端调用服务的时候会对服务建立一个会话连接通道,那么我要怎么才能达到整个系统采用一个会话呢?或者换一种方式确保系统中无论任何地方都可以知道是哪个用户在调用服务。求高手讲解! --------------------编程问答--------------------给你推荐一个博客吧
传送门 --------------------编程问答-------------------- 你要求一个会话连接通道是不是想要调用的服务确保同步成功啊,这样的话可以用WCF事务啊,
还有WCF可以获得请求方的IP的
这是前端时间搞的获得WCF客户端的IP,注意WinForm和web的获得方式不同,里面已经处理了
不知道对你有米有用
/// <summary>
/// WCF客户端IP
/// </summary>
public static string ClientIP
{
get
{
//获取传进的消息属性
MessageProperties properties = OperationContext.Current.IncomingMessageProperties;
if (properties.Keys.Contains(RemoteEndpointMessageProperty.Name))
{
//获取消息发送的远程终结点IP和端口
RemoteEndpointMessageProperty endpoint = properties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;
return endpoint.Address;
}
else
{
if (OperationContext.Current.Channel.RemoteAddress == null)
{
return "unkown";
}
return OperationContext.Current.Channel.RemoteAddress.Uri.Host;
}
}
} --------------------编程问答-------------------- 无论任何地方都可以知道是哪个用户在调用服务。
------
方法1:要求WCF支持Session,通过SessionId来判断用户。
(将SessionId和用户名的映射,自己保存在服务端的缓存里)
方法2:通过 MessageHeader --------------------编程问答-------------------- http://blogs.microsoft.co.il/blogs/bursteg/archive/2006/04/23/141.aspx --------------------编程问答-------------------- http://topic.csdn.net/u/20101223/10/a3f7effa-0eb7-404f-84ab-e62501bc8991.html参考! --------------------编程问答-------------------- 全系统用一个会话可以用单例模式,客户端的IP可以用System.ServiceModel.ServiceSecurityContext.Current来获取
补充:.NET技术 , .NET Framework