Arrays 类型为'的值;字符串';无法转换为';字符串的一维数组';网络服务呼叫

Arrays 类型为'的值;字符串';无法转换为';字符串的一维数组';网络服务呼叫,arrays,vb.net,web-services,arraylist,Arrays,Vb.net,Web Services,Arraylist,嘿,我得到的错误是: “字符串”类型的值无法转换为“字符串的一维数组” 在我的代码的这一行: Dim blah As String = webService.theQ(qString:="SELECT blah FROM table WHERE blah = 'hello'") 我的web服务sqlQ功能代码是: <WebMethod(CacheDuration:=60)> _ <ScriptMethod(UseHttpGet:=False, ResponseFormat:=

嘿,我得到的错误是:

“字符串”类型的值无法转换为“字符串的一维数组”

在我的代码的这一行:

Dim blah As String = webService.theQ(qString:="SELECT blah FROM table WHERE blah = 'hello'")
我的web服务sqlQ功能代码是:

<WebMethod(CacheDuration:=60)> _
<ScriptMethod(UseHttpGet:=False, ResponseFormat:=ResponseFormat.Json, XmlSerializeString:=False)> _
Public Function theQ(ByVal qString As List(Of String)) As String
    Dim results As Object = fetchSQLQ("query", qString(0))
    ...etc etc
    Dim ser As New System.Web.Script.Serialization.JavaScriptSerializer()
    Dim strResponse As String = ser.Serialize(results)

    return strResponse
End Function

任何帮助都会很好

这个错误几乎说明了一切。webservice调用返回的是字符串,而不是字符串列表。如果查看脚本代码,它会将AJAX调用的结果解析为JSON。虽然我无法从代码的其余部分确定,但很可能webservice调用也返回了JSON字符串

确认的简便方法:

Dim blah as String = webService.theQ(...)
' Print out the value of blah or inspect in debugger... 

如果字符串是JSON,那么您必须对其进行解析以获得您要查找的列表。

您的问题是要传递给Web服务的参数。你通过了吗

webService.theQ(qString:="SELECT blah FROM table WHERE blah = 'hello'")
将字符串分配给
qString
。但在你的声明中

Public Sub theQ(ByVal qString As List(Of String))
qString
声明为字符串列表

而且,您的web方法是一个子方法,因此没有任何返回值

Dim blah As List(Of String) = webService.theQ(. . . .

甚至不合法

使用Dim blah作为字符串仍然有相同的错误。qString有类型列表(字符串),但您只传递一个字符串;Q是一个
,它不产生返回值,但您可以将其用作
函数
@sehnsuch检查我的OP以获得更多的web服务代码,从而更好地解释我返回的内容。@StealthRT请查看我的答案-它解释了您的错误所在
Dim blah As List(Of String) = webService.theQ(. . . .