0

そこで、Rest WebHttp を使用して wcf Web サービスを呼び出しています。また、テスト用に 2 番目のバインド mex をセットアップしました。私の方法は機能していますが、フィドラーまたはクライアント アプリを介して直接 httppost でテストしようとすると、400 Bad request エラーが発生します。複数のデータ契約をメソッドに渡しています。ラップされた BodyStyle を使用する必要がありますが、テスト用に 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>
4

1 に答える 1

1

私はあなたがこれに苦労することを恐れています。まず、DataContract シリアル化名前空間がありません。DataContractSerializer は、xml 形式にする方法についてかなりうるさいです。

ごく最近、もっと単純なことをしようとしている人から 質問があり、彼は WCF にそれを受け入れさせるのに苦労していました。

ここでは、ラップされたパラメーターをフォーマットする方法について説明します。

于 2010-06-25T15:54:46.753 に答える