Asp.net mvc 直接访问post数据

Asp.net mvc 直接访问post数据,asp.net-mvc,Asp.net Mvc,我的一个控制器中有一个操作,它将接收来自MVC网站外部的HTTP POST请求 所有这些POST请求都将具有相同的参数,我需要能够解析这些参数 如何从操作中访问post数据 这可能是一个非常简单的问题 谢谢您的HTTP请求中的POST数据可以通过请求获得。表单使用 Request.InputStream 这将为您提供对HTTP消息体的原始访问,该消息体将包含所有POST变量 web服务器不应该关心请求来自何处。如果您的客户机应用程序有一个名为username的输入控件,并将其发布到您的应用程

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

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

如何从操作中访问post数据

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


谢谢

您的HTTP请求中的POST数据可以通过
请求获得。表单

使用

Request.InputStream 
这将为您提供对HTTP消息体的原始访问,该消息体将包含所有POST变量


web服务器不应该关心请求来自何处。如果您的客户机应用程序有一个名为username的输入控件,并将其发布到您的应用程序,那么它将从您自己的应用程序中获取与您的postedif相同的内容,并使用名为username的输入


一个巨大的警告是,如果您已经实施了反伪造验证,那么允许外部表单进行post将引起很大的麻烦。

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

string data = new System.IO.StreamReader(Request.InputStream).ReadToEnd(); 
这个代码对我有用

 HttpContext.Current.Request.InputStream.Position = 0;
 var result = new System.IO.StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd();
Stream req=Request.InputStream;
请求寻道(0,System.IO.SeekOrigin.Begin);
字符串json=newstreamreader(req).ReadToEnd();
JavaScriptSerializer serializer=新的JavaScriptSerializer();
动态项=序列化程序。反序列化(json);
字符串id=项目[“id”];
字符串图像=项目[“图像”];

///您可以按名称或索引访问参数,这无关紧要。Request.Form只是POST值的包装器。以下(可能)是该属性被称为
Form
的原因:当web浏览器从web表单元素发送POST请求时,标准的Internet媒体类型是“application/x-www-Form-urlencoded”。[1]这是一种用于编码可能具有重复键的键值对的格式。每个键值对由一个“&”字符分隔,每个键值由一个“=”字符与其值分隔。键和值都是通过用“+”字符替换空格,然后对所有其他字符使用URL编码来转义的。-如果数据以
application/json
的形式发布,数据会在哪里?我也以“application/json”的形式发送post数据。我无法在Request.Form或Request.InputStream中查看帖子。控制器在解析数据后是否会以某种方式删除数据?然后存储在其他地方?如果发生错误,我将尝试访问此数据以记录POST数据。这篇文章说InputStream在第一次被访问后就被处理掉了,所以也许这就是正在发生的事情。。。有趣的是
请求.Form
。更有趣的是,对
你的意思是..?
投了27票,这是一个没有解释或进一步阅读链接的半行答案。好吧,我假设我的客户端应用程序没有任何控件并不重要,我只是在用StringBuilder建立我的post参数?如果你可以发布,它会响应。如何构造帖子与web应用程序无关。不要忘记添加
Request.InputStream.Position=0否则您可能会看到一个空字符串。在这种情况下,很多时候您会希望将发布的数据强制转换为对象。因为它通常是JSON,所以请参见
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"];