1

List を WCF Post 呼び出しでパラメーターとして渡そうとしています。以下は私のコードです。

TrackingNumbers.cs

[KnownType(typeof(List<string>))]
[DataContract]
public class TrackingNumbers
{
    [DataMember]
    public List<object> TrackingNumberList { get; set; }
}

    IService.cs

    [OperationContract]
    [WebInvoke(Method = "POST",
        RequestFormat = WebMessageFormat.Xml,
        ResponseFormat = WebMessageFormat.Xml,
        BodyStyle = WebMessageBodyStyle.Bare,
        UriTemplate = "v1/xml/GetMultipleShipmentDetails/")]
    Shipments[] XMLMultipleData(TrackingNumbers trackingNumbers);

今、フィドラーから次の XML を渡しているとき

<TrackingNumbers xmlns="http://schemas.datacontract.org/2004/07/Chhotu.Web.Partner.API">
<TrackingNumberList>10000008871</TrackingNumberList>
<TrackingNumberList>10000008864</TrackingNumberList>
<TrackingNumberList>10000008858</TrackingNumberList>
</TrackingNumbers>

XMLMultipleData メソッドがデバッガーから呼び出されていません。私が間違っていることを提案してください。

4

2 に答える 2

0

私たちのコードにはいくつかの問題があります:

  • [KnownType(typeof(List))] は必要ありません。DataContractSerializer はこの型を既に認識しています。
  • リスト - 良いアプローチではありません。数値を使用する場合は、整数にしてみませんか?

必ず付いていますか?Debugger.Break(); を使用して、デバッガーのアタッチを強制することができます。コードの適切な位置に。

于 2012-06-05T12:04:57.810 に答える
0

この行を変更してみることをお勧めします

Shipments[] XMLMultipleData(TrackingNumbers trackingNumbers);

Shipments[] XMLMultipleData(TrackingNumbers[] trackingNumbers);

そしてあなたの[DataContract]として

[DataContract]
public class TrackingNumbers
{
    [DataMember]
    public int TrackingNumber{ get; set; }
}

また!削除してみてくださいKnownType(typeof(List<string>))]

ありがとう!

于 2014-01-22T12:15:07.103 に答える