0

我正在努力以预期的格式向 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 文件发送,但服务没有获取这些文件中的值(值为空)。

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

我假设我的 vTranscript 不必匹配我传入的参数,尽管我什至尝试过。

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

4

2 回答 2

1

尝试如下设置bodystyle。

 [WebInvoke(Method = "PUT", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
于 2013-10-29T18:32:13.213 回答
0

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

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

UriTemplate 是定义嵌入在 url 本身中的参数。

于 2013-10-29T16:32:16.097 回答