2

wsdlからWebサービスを生成していて、属性を持ついくつかのメソッドがあります。

[System.ServiceModel.OperationContractAttribute(Action="http://link/update", ReplyAction="*")]
WebServices.updateResponse update(WebServices.updateRequest request);

VS2010プロジェクトにこのサービスへの参照を追加しようとすると、メソッドがまったくありません。

属性を変更した後

[System.ServiceModel.OperationContract]
WebServices.updateResponse update(WebServices.updateRequest request);

その後、すべてのメソッドが使用可能になります。

最初の状況で何が問題になっていますか?

4

2 に答える 2

2

System.ServiceModel.OperationContract-System.ServiceModel.OperationContractAttributeの短いバージョンです。問題は、メタデータを壊すReplyAction = "*"にあります(つまり、WsdlExporterはその操作を無視します)。他の値に設定してみてください。

MSDN(http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontractattribute.replyaction.aspx)から:

応答メッセージのアクションヘッダーに特定の値を指定することに加えて、文字列「*」(アスタリスク)を指定することもできます。サービスにアスタリスクを指定すると、メッセージに応答アクションを追加しないようにWCFに指示されます。これは、メッセージに対して直接プログラミングしている場合に役立ちます。クライアントアプリケーションでアスタリスクを指定すると、応答アクションを検証しないようにWCFに指示されます。

于 2013-03-27T14:28:59.490 に答える
0

msdnによると、違いはありません。C#はOperationContractをOperationContractAttributeに変換します

于 2013-03-27T14:25:09.447 に答える