WebGet和对象作为WCF REST客户端中的GET参数

时间:2011-10-24 15:24:52

标签: wcf rest

假设我们的REST客户端有下一个声明:

[ServiceContract]
interface ITestClient
{
    [OperationContract]
    [WebGet(UriTemplate = "SetData/?d1={d1}&d2={d2}")]
    void SetData(string d1, string d2);
}

我想将它与下一个签名(HTTP GET)一起使用:

[ServiceContract]
interface ITestClient
{
    [OperationContract]
    [WebGet(UriTemplate = "SetData/?")]
    void SetData(SetDataRequest setData);
}

[DataContract]
public class SetDataRequest
{
    [DataMember(Name = "d1")]
    private string Data1 { get; set; }

    [DataMember(Name = "d2")]
    private string Data2 { get; set; }
}

我希望WCF将SetDataRequest的实例序列化为HTTP QueryString。 这是可能的(HTTP POST是不可接受的)?

1 个答案:

答案 0 :(得分:0)

您不应该使用WebGet,而应该: -

[OperationContract]
[WebInvoke( UriTemplate="SetDate/" Method="POST")]
void SetData(SetDataRequest setData);

您应该在提交数据时使用帖子,否则会遇到安全/缓存问题。