wcf并发问题

nullnullcao 2012-11-22 03:22:09
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在这
...全文
202 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qldsrx 2012-11-23
  • 打赏
  • 举报
回复
既然你选择了InstanceContextMode.PerSession的模式,他就会记录你的会话状态,如果下次访问的人和上次是同一个,则在同一个会话中进行处理(即同一个线程中),如果是2台不同的电脑访问,肯定是并行的,你不妨试试。至于你后面的ConcurrencyMode.Multiple,仅对不同的会话而言才有效,如果设置为ConcurrencyMode.Single,那么即使不同的会话,还是得排队。 这里想要不区分会话状态,就应该设置为InstanceContextMode.PerCall模式,肯定可行。
nullnullcao 2012-11-23
  • 打赏
  • 举报
回复
引用 3 楼 q6301536 的回复:
设计模式多看看你!
求指点
q6301536 2012-11-22
  • 打赏
  • 举报
回复
设计模式多看看你!
稻庄 2012-11-22
  • 打赏
  • 举报
回复
http://www.cnblogs.com/quietwalk/archive/2011/09/28/2193939.html 链接是一个WCF服务如何获得客户端IP地址信息的文章,希望对楼主有所帮助。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧