当前位置:编程学习 > C#/ASP.NET >>

关于WCF超时00:01:00问题如何解决

public DataSet GetResByRole(string roleGUID)
{
   return new DICOMSR.BLL.ResourceService.ResourceServiceClient().GetList("ID in (select resource_id from PERMISSION_ACTION_MAPPING where PERMISSION_ID in (select PERMISSION_ID from ROLE_PERMISSIONS_MAPPING where ROLE_ID='" + roleGUID + "'))");
}
问题是,我在界面层里调用这个方法

我放到了TAB页面里,如果双击一个内容就要去获取上面这个方法。但是速度比较慢
我如果平凡操作的话就会出现00:01:00超时问题
请问各位高手,如何处理这种问题谢谢了 --------------------编程问答--------------------

public DataSet GetResByRole(string roleGUID)
{
  return new DICOMSR.BLL.ResourceService.ResourceServiceClient().GetList("ID in (select resource_id from PERMISSION_ACTION_MAPPING where PERMISSION_ID in (select PERMISSION_ID from ROLE_PERMISSIONS_MAPPING where ROLE_ID='" + roleGUID + "'))");
}

--------------------编程问答-------------------- 天啊,居然把SQL从客户端传给服务器端,而是是传回DataSet,这是跟谁学的?。。。。。。


就SQL而言,建议在数据库端运行该SQL,查看执行计划,看瓶颈在哪里,是否应该对数据表添加适当索引

当然,超时也有可能是网速慢,可以适当增加绑定的发送时间限制SendTimeout --------------------编程问答-------------------- 这个写得有点幽默,直接传递 sql 语句会死人的。

WCF 传输的数据量有限制的。

可能你传输的太多了。 --------------------编程问答-------------------- 考虑用异步调用 --------------------编程问答-------------------- WCF的服务端binding 和客户端的binding 均可以设置 receiveTimeout 、sendTimeout ,
但是这不会是解决问题的根本。

支持2楼和3楼 --------------------编程问答-------------------- 1、查询分析器中执行SQL查看用时(如果时间长需要优化数据库)
2、考虑返回数据量大小
另:如果是纯查询没有用WCF的必要 --------------------编程问答-------------------- 1,将响应时间调大一些,传输的最大数据量也改大一些
2,优化数据库查询
3,将传输的数据压缩一下再传,收到后再解压。
补充:.NET技术 ,  Web Services
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,