在WCF Rest Post方法</string>中传递List <string>

时间:2012-06-05 11:39:29

标签: wcf

我正在尝试将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);

现在当我从fiddler

传递以下XML时
<TrackingNumbers xmlns="http://schemas.datacontract.org/2004/07/Chhotu.Web.Partner.API">
<TrackingNumberList>10000008871</TrackingNumberList>
<TrackingNumberList>10000008864</TrackingNumberList>
<TrackingNumberList>10000008858</TrackingNumberList>
</TrackingNumbers>

未从调试器调用XMLMultipleData方法。请说明我做错了什么。

2 个答案:

答案 0 :(得分:0)

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

  • 不需要[KnownType(typeof(List))],DataContractSerializer已经知道这种类型。
  • 列表 - 不是一个好方法。如果你使用数字,为什么不把它变成int?

你确定你是附属的吗?您可以尝试使用Debugger.Break()强制附加调试器;在你的代码中处于有利位置。

答案 1 :(得分:0)

我建议你尝试改变这一行

Shipments[] XMLMultipleData(TrackingNumbers trackingNumbers);

Shipments[] XMLMultipleData(TrackingNumbers[] trackingNumbers);

您的 [DataContract]

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

另外!尝试删除KnownType(typeof(List<string>))]

谢谢!