WCF PUT请求的格式是什么?

时间:2013-10-29 16:26:21

标签: c# wcf rest put

我正在努力以预期的格式向WCF发送PUT请求。我以为我可以像使用QueryString的GET一样发送它,但这只会引发错误。

    //Put operation
    [OperationContract]
    [WebInvoke(UriTemplate = "?tid={transcriptId}&qId={quizId}&cid={choice}&mid={mbox}&status={status}", Method = "PUT", RequestFormat=WebMessageFormat.Json)]
    vTranscript UpdateTranscript(string transcriptId, string quizId, string choice, string mbox, string status);

我还尝试使用CURL作为XML和JSON文件发送,但服务没有获取这些文件的值(值为null)。

[DataContract]
public class vTranscript
{
    [DataMember]
    public bool validUser;
    [DataMember]
    public bool correctAnswer;
    [DataMember]
    public bool recorded;
  }

我假设我的vTranscript 必须匹配我传入的参数,不过我甚至试过了。

我不确定我做错了什么。任何建议将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

尝试如下设置bodystyle。

 [WebInvoke(Method = "PUT", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]

答案 1 :(得分:0)

假设您发布了所有参数,您只需要以下内容:(请注意,发布的名称必须与方法参数名称匹配)

//Put operation
[OperationContract]
[WebInvoke(Method = "PUT", RequestFormat=WebMessageFormat.Json)]
vTranscript UpdateTranscript(string transcriptId, string quizId, string choice, string mbox, string status);

UriTemplate用于定义嵌入在url中的参数。