Web Service偶尔返回一个null数据集

时间:2011-08-01 15:10:48

标签: web-services ado.net dataset

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

  

System.IndexOutOfRangeException:在System.Data.DataTableCollection.get_Item(Int32 index)中找不到表0.

 Dim SQLCmd As SqlCommand = CreateSPCommand("VerifyCredentialsSP")
 SQLCmd.Parameters.AddWithValue("@Password", Credentials.Password)
GetData(SQLCmd)
ds.DataSetName = "Customer"

    If ds.Tables(0) IsNot Nothing Then

        ds.Tables(0).TableName = "Customer"
    End If

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是捕获抛出的异常,但更好的方法是在您的情况下检查nullnothing

不要访问索引ds.Tables(0)...。 在访问数据集之前检查数据集ds是否为null,如下所示:

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

这样,您可以避免查找数据集的索引,因为它包含一些有效的引用。在您的方法中,您正在访问可能存在或可能不存在的Tables(0),如果没有有效的检查,您的代码可能会抛出异常,在这种情况下它会有!