直接访问发布数据

时间:2011-05-04 14:57:46

标签: asp.net-mvc

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

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

如何从操作中访问帖子数据?

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

由于

6 个答案:

答案 0 :(得分:52)

您可以在Request.Form获取HTTP请求中的POST数据。

答案 1 :(得分:38)

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

答案 2 :(得分:18)

使用

Request.InputStream 

这将为您提供对HTTP消息正文的原始访问,该消息将包含所有POST变量。

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

答案 3 :(得分:13)

我在MVC控制器内部后试图访问POST数据。 InputStream已经被控制器解析,因此我需要将InputStream的位置重置为0以便再次读取它。

这段代码对我有用......

 HttpContext.Current.Request.InputStream.Position = 0;
 var result = new System.IO.StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();

答案 4 :(得分:5)

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"];

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

答案 5 :(得分:3)

Web服务器不应该关心请求的来源。如果您的客户端应用程序有一个名为username的输入控件,并且它会发布到您的应用程序,那么它将会像您从自己的应用程序发布的那样使用名为username的输入进行检索。

一个很大的警告是,如果你实施了AntiForgeryValidation,这将导致一个令人头疼的问题,即允许外部表单发布。