我已经构建了一个以MongoDB作为后端的MVC4 Web应用程序。进入Mongo的一些数据来自桌面应用程序,并通过WCF服务发布。
希望转储WCF服务并只使用MVC4控制器。 它适用于Get,但是当我尝试发布时,它产生了一个错误。
我确信有很多我不知道的。我猜第一个问题是...... 这有可能吗?
谢谢MarcusTzaen:是的,WebAPI是要走的路。经过一些测试后,我知道为什么要质疑。
从WPF应用程序发送以下请求(And Works): 从WPF应用程序发送以下请求:
POST http://xxx.xxx.xxx/xxx/PostDocument HTTP/1.1
Content-Type: application/json
Host: xxx.xxx.xxx
Content-Length: 116
Expect: 100-continue
Connection: Keep-Alive
{ "id" : "2134", "vals" : { "some" : "value" }, "tia" : { "tsome" : "value" }, "specCond" : { "ssome" : "value" } }
Web方法接收请求如下:
[System.Web.Mvc.ActionName("PostDocument")]
[System.Web.Mvc.HttpPost, System.Web.Mvc.HttpPut]
public Dictionary<string, object> PostDocument(object json)
{
//do stuff here
return dict;
}
当我从Microsoft Word执行此操作时,我创建了以下请求:
POST http://xxx.xxx.xxx/xxx/PostDocument HTTP / 1.1 Content-Type:application / json 主持人:xxx.xxx.xxx 内容长度:1223 期待:100-continue
{ "_id" : ObjectId("52b47bf88d1971193090155d"), "clientId" : "14173", "cdi" : "81098", "d" : "144", "dnd" : "12000", "dndi" : "1JB", "specCond" : { }, "vals" : { }, "tia" : { "tiaCount" : 0 } }
差异最终成为了PostDocument Web方法所窒息的ObjectId。 将ObjectId转换为字符串解决了这个问题。