質問

そこで、REST WebHTTPを使用してWCF Webサービスを呼び出しています。また、テスト用に2番目のバインディングMEXをセットアップしました。私の方法は機能していますが、クライアントアプリを介してFiddlerまたはStraight Httppostを介してテストしようとすると、400の悪い要求エラーが発生します。複数のデータコントラクトをメソッドに渡しています。ラップのボディスタイルを使用することを強制しますが、テスト用にXMLをフォーマットする方法がわかりません。これを試しても同じエラーを試すためのテスト方法を作成しました。私のコードは次のとおりです。他のすべてのメソッドは1つのデータコントラクトで動作しますが、これは2つありません。この問題はこの投稿の下部にあるXMLにあると思います。ラップする必要がありますが、それを包む方法はわかりません。

[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped)]
string Test(wsAuth a, wsMed m);

[DataContract(Namespace = "")]
public class wsMed
{
 [DataMember]
 public string Test{ get; set; }
}

[DataContract(Namespace = "")]
public class wsAuth
{
 [DataMember]
 public string UserName { get; set; }
 [DataMember]
        public string Password { get; set; }
 [DataMember]
 public string DeviceId { get; set; }
}

私が使用している私のXML

<Test>
<wsAuth>
 <DeviceId>jenglish</DeviceId>
 <Password>treetop</Password>
 <UserName>jenglish</UserName>
</wsAuth>
<wsMed>
 <Test></Test>
</wsMed>
</Test>

正しい解決策はありません

他のヒント

私はあなたがこれに苦労するのではないかと心配しています。まず、DataContractのシリアル化名前空間が欠落しています。 DataContractSerializerは、XMLがどのようにフォーミングされているかについてかなりうるさくなっています。

質問がありました 近々 もっと簡単なことをしようとしている人から、彼はWCFにそれを受け入れるのが困難でした。

ここ ラップされたパラメーターをフォーマットする方法の説明です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top