wcf服务的代码 [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession,ConcurrencyMode=ConcurrencyMode.Multiple)]
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            JBEModel.Comm.log("调用时间:" + DateTime.Now + " " + value, JBEModel.LogType.WcfLogin);
            System.Threading.Thread.Sleep(10000);
            return string.Format("You entered: {0}", DateTime.Now + "   :" + value);
        }
    }
客户端调用的代码
 protected void Page_Load(object sender, EventArgs e)
    {
        ServiceReference.Service1Client client = new Service1Client();
        Response.Write(client.GetData(3));
       
    }现在同时打开多个客户端页面一一刷新
2012/11/22 02:50:18 调用时间:2012/11/22 14:50:18 3
2012/11/22 02:50:28 调用时间:2012/11/22 14:50:28 3
2012/11/22 02:50:38 调用时间:2012/11/22 14:50:38 3
2012/11/22 02:50:48 调用时间:2012/11/22 14:50:48 3
2012/11/22 02:50:58 调用时间:2012/11/22 14:50:58 3
2012/11/22 02:51:08 调用时间:2012/11/22 14:51:08 3
2012/11/22 02:51:18 调用时间:2012/11/22 14:51:18 3
为什么不能并发?
demo在这

解决方案 »

  1.   

    http://www.cnblogs.com/quietwalk/archive/2011/09/28/2193939.html链接是一个WCF服务如何获得客户端IP地址信息的文章,希望对楼主有所帮助。
      

  2.   

    看看会话模式
    http://msdn.microsoft.com/zh-cn/library/ms731193.aspx
      

  3.   

    既然你选择了InstanceContextMode.PerSession的模式,他就会记录你的会话状态,如果下次访问的人和上次是同一个,则在同一个会话中进行处理(即同一个线程中),如果是2台不同的电脑访问,肯定是并行的,你不妨试试。至于你后面的ConcurrencyMode.Multiple,仅对不同的会话而言才有效,如果设置为ConcurrencyMode.Single,那么即使不同的会话,还是得排队。
    这里想要不区分会话状态,就应该设置为InstanceContextMode.PerCall模式,肯定可行。