Web サービス エラー ' パラメーターのないコンストラクターがありません '
-
26-09-2019 - |
質問
Web サービスを作成しました。これは、次を使用してユーザー資格情報を設定するメソッドです。 Microsoft.Web.Services3.WebServicesClientProtocol
. 。サンプルコードは次のとおりです。
<WebMethod()> _
Public Sub ClientCredential1(Of TSecurityToken As SecurityToken)_
(ByVal UserCred As Microsoft.Web.Services3.Security.Tokens.UsernameToken)
Dim cProxy As New Microsoft.Web.Services3.WebServicesClientProtocol()
cProxy.SetClientCredential(UserCred)
End Sub
Web サービスを実行すると、次のエラーが発生します。
「パラメーターのないコンストラクターがないため、Microsoft.Web.Services3.Security.Tokens.UsernameToken をシリアル化できません。」
どこに問題があるか知っている人はいますか?
解決
ここでの問題の根本は、クラス Microsoft.Web.Services3.Security.Tokens.UsernameToken
パラメータのないコンストラクタはありません。3 つありますが、すべてパラメータが必要です。 MSDN の UsernameToken コンストラクター.
UsernameToken (XmlElement)
UsernameToken (String, String)
UsernameToken (String, String, PasswordOption)
問題は、逆シリアル化中に、XmlSerializer がパラメーターなしのコンストラクターを呼び出して、そのクラスのインスタンスを作成することです。パラメーターのないコンストラクターを持たない型を逆シリアル化することはできません。
この問題を回避するためにできることはあまりないような気がします。部分クラスを作成し、そのゼロパラメータのコンストラクターを自分で実装することのみをお勧めします。
'ensure namespacing is correct.
Public Partial Class UsernameToken
Public Sub New()
End Sub
End Class
他のヒント
P。キャンベルは、XmlSerializerををパラメータなしのコンストラクタを必要とするため、それはだ、右です。
私はWSEを知らないが、
Dim oService As New WSETestService.ServiceWse
Dim U As New UsernameToken(“<User_Name>”, “<Password>”, PasswordOption.SendHashed)
oService.SetClientCredential(U)
あなたは、Webサービスに型Microsoft.Web.Services3.Security.Tokens.UsernameToken
のパラメータを使用することはできません。
ちょうどあなたがパラメータの型としてUsernameToken
と使用を作成する必要があるというデータが含まれているクラスを作成します。クライアント側はとにかくリアルUsernameToken
オブジェクトを作成しないだろう、WSDL情報から作成したプロキシクラスがあります。