假设我们的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是不可接受的)?
答案 0 :(得分:0)
您不应该使用WebGet,而应该: -
[OperationContract]
[WebInvoke( UriTemplate="SetDate/" Method="POST")]
void SetData(SetDataRequest setData);
您应该在提交数据时使用帖子,否则会遇到安全/缓存问题。