对于概述here原因之前,我需要从他们每个请求的查询字符串之前或FORMDATA审查一组值(这样我就可以执行一些验证)。密钥每次都一样,并且应该出现在每个请求中,但是它们将位于GET请求的查询字符串中,以及用于POST和其他数据的查询字符串中的ASP.NET Web API - 读取查询字符串/ FORMDATA每个请求
由于这是用于身份验证的目的,因此需要运行请求前;目前我正在使用MessageHandler。
我可以计算出是否应该基于方法读取querystring或formdata,何时它是GET,我可以使用Request.GetQueryNameValuePairs()读取查询字符串OK;然而问题是当它是一个POST时读取formdata。
我可以使用Request.Content.ReadAsFormDataAsync()获取formdata,但是formdata只能被读取一次,并且当我在这里读取它时,它不再可用于请求(即,我的控制器动作获取空模型)
什么是最合适的方式一致和非侵入从请求读取查询字符串和/或FORMDATA它得到请求逻辑之前?
并称作品: - 。 ' \t结果= request.Content.ReadAsFormDataAsync()结果; \t Stream requestStream = request.Content.ReadAsStreamAsync()。Result; \t requestStream.Position = 0; ' 您对缓冲区政策评论...确实认为,从应用的角度来看意味着它不会工作 如果在其上运行代码的服务器具有策略设置为流传? – Aleks 2013-02-24 02:40:04
是的..这是正确的...你可以尝试一下,用本博客文章中提到的Streamed策略代替:http://blogs.msdn.com/b/kiranchalla/archive/2012/09/04/receiving-请求文件或数据功能于流传输模式-AT-A-web的API-service.aspx – 2013-02-24 04:51:04