SQLServer2012データベースでジョブを実行する複数の機能を備えたWebサービスがあります。私の目的は、このWebサービス機能を使用してデータベースを選択して挿入するWindowsサービスを用意することです。
現在のWebサービスには、ブール値、文字列、または文字列のリストを返すさまざまな関数タイプがあります。Windowsフォームから文字列getGames()のリストを返す関数を呼び出す場合を除いて、すべてが正常に機能します。(WindowsサービスのレプリカとしてのWindowsフォーム)
エラー:タイプ「オブジェクトの1次元配列」の値を「System.collections.generic.list(OfString)」に変換できません
Windowsフォームプロジェクトから、Webサービスを追加しました-[サービス参照の追加]>[詳細設定]>[Web参照の追加]。私はまだ学生なので、Webサービスの経験はあまりありません。WindowsサービスはFramework3.5で作成され、WindowsフォームはFramework 4.5で作成されます(これが違いを生むかどうかはわかりません)エラー:
listOfGames = ws.getGames("username123", "password123") '** Error Here
これがWebサービス機能です
<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