直接访问发布数据

我在我的控制器中有一个操作,它将从我的MVC网站外部接收HTTP POST请求。

所有这些POST请求将具有相同的参数,我需要能够parsing参数。

如何从行动中访问发布的数据?

这可能是一个非常简单的问题!

谢谢

来自HTTP请求的POST数据可以在Request.Form获得。

 string data = new System.IO.StreamReader(Request.InputStream).ReadToEnd(); 

使用

 Request.InputStream 

这将使您能够原始访问HTTP消息的主体,这将包含所有的POSTvariables。

http://msdn.microsoft.com/en-us/library/system.web.httprequest.inputstream.aspx

我正在尝试访问MVC控制器内部的POST数据。 InputStream已经被控制器parsing过了,所以我需要将InputStream的位置重置为0才能再次读取它。

此代码为我工作…

  HttpContext.Current.Request.InputStream.Position = 0; var result = new System.IO.StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd(); 
 Stream req = Request.InputStream; req.Seek(0, System.IO.SeekOrigin.Begin); string json = new StreamReader(req).ReadToEnd(); JavaScriptSerializer serializer = new JavaScriptSerializer(); dynamic items = serializer.Deserialize<object>(json); string id = items["id"]; string image = items["image"]; 

///您可以通过名称或索引访问参数

Web服务器不应该关心请求来自哪里。 如果你的客户端应用程序有一个称为用户名的input控件,它发布到你的应用程序,它将会像你从你自己的应用程序中发布一个名为username的input一样。

一个巨大的警告是,如果你已经实施了AntiForgeryValidation,这将导致一个很大的头痛,让外部表单发布。