我有一个具有多种功能的 Web 服务,这些功能与 SQL Server 2012 数据库一起工作。我的目标是拥有一个使用此 Web 服务功能来选择和插入数据库的 Windows 服务。
当前的 Web 服务有不同的函数类型,它们返回布尔值、字符串或字符串列表。一切正常,除非调用从 Windows 窗体返回字符串 getGames () 列表的函数。(Windows 窗体作为 Windows 服务的副本)
错误:“对象的一维数组”类型的值无法转换为“System.collections.generic.list(Of String)”
从 Windows 窗体项目中,我添加了一个 Web 服务 - 添加服务引用 > 高级 > 添加 Web 引用。我还是一名学生,所以我没有太多的网络服务经验。Windows 服务是在 Framework 3.5 上创建的,而 Windows 窗体是在 Framework 4.5 上创建的(不确定这是否有所不同)错误:
listOfGames = ws.getGames("username123", "password123") '** Error Here
这是网络服务功能
<WebMethod()> _
Public Function getGames(ByVal username As String, ByVal password As String) As List(Of String)
Dim m As DBMember = DBMember.verifyUsername(username, password)
If m IsNot Nothing Then
Dim gList As New List(Of String)
gList = DBGame.selectAllGames()
Return gList
End If
Return Nothing
End Function
以下是我调用 Web 服务函数的方式:
Private Sub onStart()
Dim ws As localhost.Service1 = New localhost.Service1
listOfGames = ws.getGames("username123", "password123") '** Error Here
End Sub
这是查询:
Shared Function selectAllGames() As List(Of String)
Dim cmd As New SqlCommand
cmd.CommandText = "SELECT g_Exe FROM Game"
cmd.Connection = DB.Conn()
Dim rdr As SqlDataReader = cmd.ExecuteReader()
Dim gList As New List(Of String)
If rdr.HasRows Then
While rdr.Read
gList.Add(rdr.Item("g_Exe").ToString())
End While
End If
DB.CloseDB()
Return gList
End Function