Web services 偶尔返回空数据集的Web服务

Web services 偶尔返回空数据集的Web服务,web-services,ado.net,dataset,Web Services,Ado.net,Dataset,我遇到了最令人沮丧的问题,基本上我有一个网站和一个Web服务在同一台服务器上运行。两者都使用ADO.net连接到数据表,使用我自己创建的两个自定义调用,该网站从未遇到连接到特定进程以返回数据的问题,但是webservice,比如说每100次调用该进程一次,返回一个空数据集,即使它本应返回并在SQL Mgmt Studio的查询中填充。奇怪的是,它在大多数情况下都能工作,但在奇怪的情况下会返回以下错误: System.IndexOutOfRangeException:找不到表0。位于System.

我遇到了最令人沮丧的问题,基本上我有一个网站和一个Web服务在同一台服务器上运行。两者都使用ADO.net连接到数据表,使用我自己创建的两个自定义调用,该网站从未遇到连接到特定进程以返回数据的问题,但是webservice,比如说每100次调用该进程一次,返回一个空数据集,即使它本应返回并在SQL Mgmt Studio的查询中填充。奇怪的是,它在大多数情况下都能工作,但在奇怪的情况下会返回以下错误:

System.IndexOutOfRangeException:找不到表0。位于System.Data.DataTableCollection.get_项(Int32索引)


一种方法是捕获抛出的异常,但更好的方法是在您的情况下检查
null
nothing

不要访问索引
ds.表(0)…
。 在像这样访问数据集之前,请检查您的数据集
ds
是否为
null

If ds IsNot Nothing then
  'only then can you index ds.
end if

通过这种方式,可以避免在数据集的索引上进行查找,因为它包含一些有效的引用。在您的方法中,您正在访问表(0),这些表可能存在,也可能不存在,如果没有有效的检查,您的代码可能会引发异常,在这种情况下,它已经发生了

Hi John,我同意,但问题是即使没有返回行,它仍然应该返回一个表。这就像Web服务/数据连接以某种方式断开,但每100-150次调用仅断开一次。David,我无法告诉您原因,但您仍应进行错误检查。由于没有从表中提取数据,您必须使用profiler或其他工具来理解它为什么没有返回。这可能只是一个时间问题。这些问题很难解决,祝你好运。
If ds IsNot Nothing then
  'only then can you index ds.
end if