问题描述
APIController代码[HttpPost]publicstringGetImport(IEnumerable<Import>collection){varprops=typeof(Import).GetProperties();vardt=newDataTable();dt.Columns.AddRange(props.Select(p=>newDataColumn(p.Name,p.PropertyType)).ToArray());if(collection.Count()>0){for(inti=0;i<collection.Count();i++){ArrayListtempList=newArrayList();foreach(PropertyInfopiinprops){objectobj=pi.GetValue(collection.ElementAt(i),null);tempList.Add(obj);}object[]array=tempList.ToArray();dt.LoadDataRow(array,true);}}try{returnnewBizOSRStorage().GetImport(dt);}catch(Exception){throw;}}然后就是调用存储过程2个updateUPDATEtbl_wms_ArticleDetailSETtbl_wms_ArticleDetail.CategoryMeaning=Temp.CategoryMeaning,tbl_wms_ArticleDetail.TempText='ljj'FROM@ArticlTBASTempWHEREtbl_wms_ArticleDetail.CategoryCode=Temp.CategoryCodeUPDATEtbl_wms_ArticleDetailSETtbl_wms_ArticleDetail.SilhouetteMeaning=Temp1.SilhouetteMeaning,tbl_wms_ArticleDetail.TempText='ljj1'FROM@ArticlTBASTemp1WHEREtbl_wms_ArticleDetail.SilHouette=Temp1.SilHouette
解决方案
解决方案二:
如果超时的话在web.config中延长executionTimeout的超时时间
解决方案三:
逻辑处理速度太慢?
解决方案四:
你先确认是页面超时,还是sql超时
解决方案五:
我也不知道,我贴的第一个方法是json转table的,只有500条数据左右,应该速度不慢,存储过程做了2个update.
解决方案六:
引用4楼qqlijiajian的回复:
我也不知道,我贴的第一个方法是json转table的,只有500条数据左右,应该速度不慢,存储过程做了2个update.
不知道就去调试,先把错误点确认,不然谁也不知道
解决方案七:
引用2楼xdashewan的回复:
逻辑处理速度太慢?
没有什么逻辑,我贴的第一个方法是json转table的,只有500条数据左右,应该速度不慢,存储过程做了2个update.
解决方案八:
如果处理时间太长的话,那就把比较耗时的那块做成异步调用吧
解决方案九:
方法一:可能是你哪句sql语句查询花的时间比较长。试试下面的方法,下面的方法能让你知道一条sql语句执行好之后用了多少时间。declare@ddatetimeset@d=getdate()select*fromtableCselect[语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
tableC是你要查询的数据库表名称。你用这个方法再加上排除法,就可以知道到底是哪一条sql语句执行好之后花的时间比较长。方法二:在web.config中设置<httpRuntimemaxRequestLength="102400"executionTimeout="720"/>
方法三:在web.config的数据连接字符串加上下面两个属性:PacketSize=8192;MaxPoolSize=1000;
方法四:在读数据库的方法中添加cmd.CommandTimeout=180;