重用MVC4 Controller从桌面应用程序发布数据

时间:2013-12-20 05:26:24

标签: c# wcf asp.net-mvc-4 post ms-word

我已经构建了一个以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转换为字符串解决了这个问题。

1 个答案:

答案 0 :(得分:0)

为什么不使用Web API

您可以使用HttpPost指定操作支持POST HTTP方法。