1

我正在尝试将 WCF Post 调用中的 List 作为参数传递。下面是我的代码。

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

我建议您尝试更改此行

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 回答
0

我发现我们的代码存在一些问题:

  • 不需要 [KnownType(typeof(List))],DataContractSerializer 已经知道这个类型。
  • 列表 - 不是一个好方法。如果您使用数字,为什么不将其设为 int 呢?

你确定你附身了?您可以尝试使用 Debugger.Break(); 强制附加调试器;在您的代码中处于良好位置。

于 2012-06-05T12:04:57.810 回答