调用webservice偶尔报错问题

wx999999999 2013-11-12 05:33:14
调用webservice偶尔会报错,有时点没问题,但是有时点就报错,单独运行webservice从来没有出现过这样问题,这是什么原因呢,请高人指点,谢谢。

System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.IndexOutOfRangeException: 索引超出了数组界限。
在 EDSWebService.ServiceData.RelaContent(String[] devBuf, String[] rtBuf, Int32 devNum, Int32 rtNum) 位置 C:\Projects\EDSWebService\EDSWebService\EDSWebService\ServiceData.cs:行号 193
在 EDSWebService.WebService.GetPointMonitorData(String sysId) 位置 C:\Projects\EDSWebService\EDSWebService\EDSWebService\WebService.asmx.cs:行号 276
--- 内部异常堆栈跟踪的结尾 ---

GetPointMonitorData(String sysId)方法中调用了
RelaContent(String[] devBuf, String[] rtBuf, Int32 devNum, Int32 rtNum)
单独运行没有任何问题啊,怎么调用时偶尔会报这个错呢。
...全文
278 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
c02645 2013-11-13
  • 打赏
  • 举报
回复
引用 9 楼 wx999999999 的回复:
[quote=引用 6 楼 c02645 的回复:] [quote=引用 5 楼 wx999999999 的回复:] [quote=引用 3 楼 c02645 的回复:] String[] devBuf, String[] rtBuf 这两个数组,使用前判断 devBuf.Length 如: if(devBuf.Length>3) string b3=devBuf[3];
这两个数组都是有数据的,我用相同的数据进行测试的,我在前台点连接有时能出数据,有时就报那个错,找不到原因在哪[/quote] 你不用管它有没有数据,你的使用前一律判断,这个错误就可以解决了。 如果里面有定义的数据,也要判断。[/quote] 谢谢你的回答,我在程序里引用本地的webservice调用很正常,不会报那个错, 但是调用在iis上发布的webservice就不稳定,有时会报错,是什么原因呢[/quote] 你调用的数组正常啊,别人调用的数组长度可能跟你不一样呢? 比如别人调用是这样: RelaContent(new string[], new string[], 1, 1);//调用 devBuf和rtBuf都是空的,你说你那里处理,如果不判断会错吗? 再比如: string[] devBuf=new string[1]{"aa"}; string[] rtBuf=new string[1]{"aa"}; RelaContent(devBuf, rtBuf, 1, 1);//调用 如果你在RelaContent方法里有devBuf[2];那肯定出错啊。 所以devBuf, rtBuf这两个数组使用前先判断长度....
wx999999999 2013-11-13
  • 打赏
  • 举报
回复
引用 6 楼 c02645 的回复:
[quote=引用 5 楼 wx999999999 的回复:] [quote=引用 3 楼 c02645 的回复:] String[] devBuf, String[] rtBuf 这两个数组,使用前判断 devBuf.Length 如: if(devBuf.Length>3) string b3=devBuf[3];
这两个数组都是有数据的,我用相同的数据进行测试的,我在前台点连接有时能出数据,有时就报那个错,找不到原因在哪[/quote] 你不用管它有没有数据,你的使用前一律判断,这个错误就可以解决了。 如果里面有定义的数据,也要判断。[/quote] 谢谢你的回答,我在程序里引用本地的webservice调用很正常,不会报那个错, 但是调用在iis上发布的webservice就不稳定,有时会报错,是什么原因呢
wx999999999 2013-11-13
  • 打赏
  • 举报
回复
引用 1 楼 feiyun0112 的回复:
那就说明跟数据有关,写日志记录出错时的数据 ***************************************************************************** 签名档: http://feiyun0112.cnblogs.com/
版主你好,我在程序里引用本地的webservice调用很正常,不会报那个错, 但是调用在iis上发布的webservice就不稳定,有时会报错,是什么原因呢
csover8 2013-11-12
  • 打赏
  • 举报
回复
按版主说的,用try catch,然后写入日志。
c02645 2013-11-12
  • 打赏
  • 举报
回复
引用 5 楼 wx999999999 的回复:
[quote=引用 3 楼 c02645 的回复:] String[] devBuf, String[] rtBuf 这两个数组,使用前判断 devBuf.Length 如: if(devBuf.Length>3) string b3=devBuf[3];
这两个数组都是有数据的,我用相同的数据进行测试的,我在前台点连接有时能出数据,有时就报那个错,找不到原因在哪[/quote] 你不用管它有没有数据,你的使用前一律判断,这个错误就可以解决了。 如果里面有定义的数据,也要判断。
wx999999999 2013-11-12
  • 打赏
  • 举报
回复
引用 3 楼 c02645 的回复:
String[] devBuf, String[] rtBuf 这两个数组,使用前判断 devBuf.Length 如: if(devBuf.Length>3) string b3=devBuf[3];
这两个数组都是有数据的,我用相同的数据进行测试的,我在前台点连接有时能出数据,有时就报那个错,找不到原因在哪
wx999999999 2013-11-12
  • 打赏
  • 举报
回复
引用 1 楼 feiyun0112 的回复:
那就说明跟数据有关,写日志记录出错时的数据 ***************************************************************************** 签名档: http://feiyun0112.cnblogs.com/
数据都是相同的,就是有时调用能弹出表格,有时就报这样的错误。
c02645 2013-11-12
  • 打赏
  • 举报
回复
String[] devBuf, String[] rtBuf 这两个数组,使用前判断 devBuf.Length 如: if(devBuf.Length>3) string b3=devBuf[3];
好大一只鸭 2013-11-12
  • 打赏
  • 举报
回复
[quote=引用 1 楼 feiyun0112 的回复:] 那就说明跟数据有关,写日志记录出错时的数据 IndexOutOfRangeException数据类型问题吧!
feiyun0112 2013-11-12
  • 打赏
  • 举报
回复
那就说明跟数据有关,写日志记录出错时的数据

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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