【问题标题】:WCF Rest Post from Backbone.js always receives null object on server来自 Backbone.js 的 WCF Rest Post 始终在服务器上接收空对象
【发布时间】:2012-07-05 10:48:08
【问题描述】:

我正在使用主干.js 并将模型 ( todo ) 发布到 wcf Rest 服务,您可以在下面找到其详细信息。出于某种原因,无论发布的 json 是什么,实现总是收到一个空值。

合同

    [WebInvoke(ResponseFormat = WebMessageFormat.Json, Method = "POST", UriTemplate = "Todos", RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    [OperationContract]
    Wallet CreateTodos(Todo instance);

实施

    public Wallet CreateTodos(Todo instance)
    {
        if (instance == null)
        {
            WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotAcceptable;
            return null;
        }

      ... blah blah blah

数据合同

[DataContract]
Public Class Todo
{    
  [DataMember]
  public string Name{get;set;}    
}

发布 Json

{ “姓名”:“欢迎客人” }

Http 详细信息

Accept:application/json, text/javascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Length:281
Content-Type:application/json
Host:localhost
Origin:http://localhost
Pragma:no-cache
Referer:http://localhost/todos/index.html
X-Requested-With:XMLHttpRequest

【问题讨论】:

  • 您能否监控原始请求的外观并发布它?

标签: json wcf rest backbone.js


【解决方案1】:

您的原始请求应如下所示:

POST http://localhost:54897/Sample.svc/Todos HTTP 1.1
Content-Type: application/json
Host: localhost

{"instance":{"Name":"This is my first todo"}

【讨论】:

  • 但是更新怎么会起作用[WebInvoke(ResponseFormat = WebMessageFormat.Json, UriTemplate = "Wallets/{id}", Method = "PUT")] [OperationContract] Todo UpdateTodo(string id, Todo instance); 哪个帖子到localhost/Sample.svc/Todos/1{"Name":"Welcome"} 怎么会正确转换
  • 您在 post 方法中将 bodystyle 设置为 Wrappedrequest
  • 那么除了将 Method 更改为 PUT 之外,什么是正确的配置才能使其工作类似于 PUT 请求
  • btw http 帖子和其他看起来与servicestack.net/Backbone.Todos 相同(但我在这里只使用 Wcf)
  • 删除 POST 方法上的 BodyStyle 属性应该使其类似于 PUT
猜你喜欢
  • 2016-06-27
  • 2018-05-05
  • 2016-06-15
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
相关资源
最近更新 更多