【发布时间】:2011-03-28 19:50:39
【问题描述】:
我创建了一个 HttpModule 来捕获请求以进行审计。
对于网络方法的 Ajax 请求,我还想记录与请求关联的 JSON 数据。
例如请求
POST /MyPage.aspx/AddRecord HTTP/1.1
x-requested-with: XMLHttpRequest
接受语言:en-gb
推荐人:http://fiddlerlocal:5000/AddRecord.aspx
接受:应用程序/json、文本/javascript、/
内容类型:应用程序/json;字符集=utf-8
UA-CPU:x86
接受编码:gzip、deflate
用户代理:Mozilla/4.0(兼容;MSIE 7.0;Windows NT 5.1;.NET CLR 2.0.50727;.NET CLR 3.0.04506.648;.NET CLR 3.5.21022;.NET CLR 3.0.4506.2152;.NET CLR 3.5。 30729)
主机:fiddlerlocal:5000
内容长度:287
连接:保持活动
编译指示:无缓存
Cookie:.....
{"id":"282aa3b5-b55f-431c-916e-60433fdb61c0","date":"8-6-2010"}
我尝试了多种方法从 HttpContext.InputStream 读取 JSON ({"id":"282aa3b5-b55f-431c-916e-60433fdb61c0","date":"8-6-2010"}) .
示例 1:
StreamReader reader = new StreamReader(request.InputStream);
字符串编码字符串 = reader.ReadToEnd(); -- ReadToEnd 返回一个空字符串
示例 2:
使用 (MemoryStream ms = new MemoryStream())
{
字节[] 缓冲区 = 新字节[request.ContentLength];
request.InputStream.Read(buffer, 0, request.ContentLength);
ms.Write(buffer, 0, request.ContentLength); -- 字节数组包含正确的字节数,但每个字节的值为 0 - 编码方式如何?
返回 Convert.ToBase64String(ms.ToArray()); -- 什么都不做
返回 Encoding.UTF8.GetString(ms.ToArray()); -- 什么都不做
}
如何成功地从 HttpContext.InputStream 中提取数据?
提前致谢。
【问题讨论】:
标签: asp.net json xmlhttprequest httpmodule inputstream