StackOverflowers さん、こんにちは。
私は、jquery などから正常に消費できる C# で書かれた WCF サービスを持っています。
C# で Web サービス参照を追加し、コードで呼び出しを行うことで、それを使用できるようにしたいと考えています。複数のパラメーターを追加するまでは、すべてバラ色でした。Service メソッドを呼び出そうとすると、次のエラーが発生します。
コントラクト 'IPublic' の操作 'GetStopNames' は、ラッパー要素なしでシリアル化される複数の要求本文パラメーターを指定します。ラッパー要素なしでシリアル化できる body パラメーターは最大で 1 つです。余分なボディ パラメーターを削除するか、WebGetAttribute/WebInvokeAttribute の BodyStyle プロパティを Wrapped に設定します。
私は何年にもわたって StackOverflow をグーグルで検索しましたが、誰もが
BodyStyle=WebMessageBodyStyle.Wrapped
WebGet / WebInvoke 属性を設定することで問題を解決したようです。
インターフェイス内の私のサービス メソッドの 1 つの例:
[OperationContract]
[WebGet( BodyStyle=WebMessageBodyStyle.WrappedRequest
, UriTemplate = "GetOperators?appKey={apk}"
, RequestFormat = WebMessageFormat.Json
, ResponseFormat = WebMessageFormat.Json)]
ResultList GetOperators(string apk);
これに何か問題がありますか?
私はただ電話している
ServiceReference1.PublicClient c = new ServiceReference1.PublicClient();
c.GetOperators("XXX");
クライアント内で、2行目で壊れています。
何か案は?私に答えるために必要なデータが他にもある場合は、コメントを追加してください:)
編集:これは私のWeb.configファイルからの関連ビットの抜粋です http://pastebin.com/CyQNG6wk
編集: コメントでリンクした serviceContract へのショートカット http://pastebin.com/bvGmGtfd
最終的に WebApi の使用に切り替えましたが、なぜ失敗したのかまだわからないので、この質問を開いたままにしています。