10

という名前の2つのメソッドがあります

[OperationContract]
UserAccount GetUser(Int32 id);

[OperationContract]
UserAccount GetUser(string username, string password);

私がそれらを構築しようとすると、同じ名前のメソッドをサービスに含めることはできないと言われましたか? それは...ですか。

4

4 に答える 4

14

これはWSDLの制限です。C#/。NETと同じオーバーロードの概念をサポートしていないため、サービスのメソッド名は一意である必要があります。問題を解決するには2つのオプションがあります。

1つ目は、メソッドに異なる名前を使用することです。もう1つは、OperationContractsの1つにNameプロパティを次のように設定することです。

[OperationContract(Name="GetUserById")]
UserAccount GetUser(Int32 id);

[OperationContract]
UserAccount GetUser(string username, string password);
于 2013-03-07T10:07:46.317 に答える
4

WSDL は、c# と同じオーバーロードの概念をサポートしていません。OperationContract で Name を使用してメソッドを指定できます

 [OperationContract(Name="GetUserInt")]
 UserAccount GetUser(Int32 id);

 [OperationContract(Name="GetUserString")]
 UserAccount GetUser(string username, string password);
于 2013-03-07T10:10:11.123 に答える
2

これを試して:

- [OperationContract(Name= "GetUserWithID")]
   UserAccount GetUser(Int32 id);

- [OperationContract(Name= "GetUserWithUserName")]
  UserAccount GetUser(string username, string password);

より詳しい情報

于 2013-03-07T10:08:46.827 に答える