asp.net 中,怎么在mvc Controller中获取HttpRequestMessage对象

RT, 在MvcController中,直接Request.Params["openid"] 就可以获取了,这个Request是HttpRequestBase类型的,那怎么获取HttpRequestMessag类型对象,因为要用到ApiController中的方法?

第1个回答  2018-10-19
你是用在 webapi中吗? 还是MVC?追问

嗯,apiController中的

追答

因为webapi跟mvc有点小区别,轻量了非常多。取值也有一点改变,

因为 webapi是 restful风格 

如果是:Content-Type: application/x-www-form-urlencoded 下它的取值有

       //对于GET请求获取参数
        [HttpGet]
        public HttpResponseMessage List(string openid,string appid)
        {

        }

        // POST 下 必须 加上 [FromBody]特性
        [HttpPost]
        public HttpResponseMessage List([FromBody] FormDataCollection parm)
        {
            var openid = parm["openid"].ToString();
        }

如果是:Content-Type: application/json 下它的取值有

        //自定义实体接受
        [HttpPost]
        public HttpResponseMessage List([FromBody] DataEntity parm)
        {
            var openid = parm.Openid;
        }
        //dynamic类型接受 不建议你使用
        [HttpPost]
        public HttpResponseMessage List([FromBody] dynamic parm)
        {
            var openid = parm.Openid;
        }
        //Newtonsoft.Json.Linq 因为内置格式参数使用的库
        // 对象 JObject 数组对象 JArray
        [HttpPost]
        public HttpResponseMessage List([FromBody] JObject parm)
        {
            var openid = parm["openid"].ToString();
        }

追问

这是apiController中的

你还是没看清我问的,我是想在mvcController中获取HttpRequestMessage类型的 Request,也就是怎么把 HttpRequestBase转成HttpRequestMessage

追答

转换不了,WEBAPI跟MVC两者用的 库不同,

MVC用的是 System.Web.dll

WEBAPI用的是System.Net.Http.dll,MVC并没有用HttpRequestMessage重写过Base.

MVC获取 http字符串查询 提供的是 Request.QueryString 你可以转换成 IEnumerable<KeyValuePair<string, string>>,但是这样感觉没什么必要。

其实我真不知道为什么要这样做。到底是为了什么?为了查询HTTP字符检索吗?

追问

3Q, 参数签名验证用的。

本回答被提问者采纳
相似回答
大家正在搜