WCF REST参数对象为null

时间:2014-07-04 09:03:16

标签: c# .net wcf api rest

我创建了WCF REST API。我已经为API实现了以下服务接口和服务方法。

服务接口:

[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
ObjAPI GetAPIRequest(ObjAPI objAPI)

服务:

public ObjAPI GetAPIRequest(ObjAPI objAPI)
{
   return new ExternalAPI().GetAPIRequest(objAPI);

}

ObjAPI类的代码

    [System.Runtime.Serialization.DataContract(Namespace = "")]
    public class ObjAPI
    {
        [System.Runtime.Serialization.DataMember]        
        public int ID { get; set; }   

        [System.Runtime.Serialization.DataMember]
        public Client Client { get; set; }       


    }
}

我的ObjAPI包含另一个对象“Client”,然后我已经将以下Xml传递给该服务。

<ObjAPI> 
<ID> 1 </ID>
<Client> 
< ClientNumber>0067HA000001</ ClientNumber>
</Client > 
</ ObjAPI >

但是在“GetAPIRequest”方法中,ID字段获取其值并且客户端对象变为null。

如何解决此问题?

谢谢......。

1 个答案:

答案 0 :(得分:0)

[ServiceContract]
public interface IInterface
{
    [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
    ObjAPI GetAPIRequest(ObjAPI objAPI)
}

public class Service: IInterface
{
    public ObjAPI GetAPIRequest(ObjAPI objAPI)
    {
       return new ExternalAPI().GetAPIRequest(objAPI);
    }
}

[System.Runtime.Serialization.DataContract(Namespace = "")]
public class ObjAPI
{
    [System.Runtime.Serialization.DataMember]        
    public int ID { get; set; }   

    [System.Runtime.Serialization.DataMember]
    public Client Client { get; set; }       
}

我们还必须为Client类

设置DataContract和DataMember属性
[System.Runtime.Serialization.DataContract(Namespace = "")]
public class Client
{
    [System.Runtime.Serialization.DataMember]        
    public string ClientNumber { get; set; }     
}