0

アプリケーションから ASMX Web サービスにデータを渡すときに、常にキャスト エラーが発生する

私の WebService コード

   Public Function SetAlterLogTrx(ByVal qsTrx As List(Of String)) As String
    Dim oStatus As New LogAlterStatusDsp

    Dim iRec As Integer = 0
    Using DBCONN As New SqlConnection()
        Dim strConnString As String = ConfigurationManager.ConnectionStrings("Conn").ConnectionString
        DBCONN.ConnectionString = sDBConnString

        If qsTrx.Count = 0 Then
            Return "Failed"
        Else
            Dim sQueryList As Array = qsTrx.ToArray
            For Each sQuery As String In sQueryList
                Using UpdateOutCommand As New SqlCommand(sQuery, DBCONN)
                    Try
                        With DBCONN
                            .Open()
                            iRec = UpdateOutCommand.ExecuteNonQuery()
                            .Close()
                        End With
                    Catch ex As Exception
                        Return "Failed"
                    End Try
                End Using
            Next
            Return "Ok"
        End If
    End Using

End Function

私のクライアントコード

    dim qsArray() as string
    'This array has many lines
    Using oSvc As New AnfaEngine.AnfaWSSoapClient
        Dim svcReplay As AnfaEngine.LogAlterStatusDsp
        Dim oList As New List(Of String)
        oList.AddRange(qsArray.Cast(Of String).ToList)
        svcReplay = oSvc.SetAlterLogTrx(oList)
    End Using

そして、私はいつもこのエラーメッセージを受け取ります:

タイプ 'System.Collections.Generic.List`1[System.String]' のオブジェクトをタイプ 'WS.ArrayOfString' にキャストできません。

この問題を解決するにはどうすればよいですか。

4

2 に答える 2

0

List(Of T)「サービス参照の追加」を使用してサービスを参照する場合は、「詳細設定」タブを使用して、コレクション タイプとしてa の使用を指定してみてください。

それがうまくいかない場合は、受信したいものをサービスに送信するだけです。

于 2013-05-20T18:00:01.563 に答える
-1

次のようにクライアントコードで問題を解決しました。

 dim qsArray() as string
'This array has many lines
Using oSvc As New AnfaEngine.AnfaWSSoapClient
    Dim svcReplay As AnfaEngine.LogAlterStatusDsp
    Dim oList As New List(Of AnfaEngine.ArrayOfString)
    oList.AddRange(qsArray.Cast(Of String).ToList)
    svcReplay = oSvc.SetAlterLogTrx(oList)
End Using
于 2013-05-22T11:09:09.737 に答える