Я создал HttpModule для захвата запросов для целей аудита.Помочь чтению JSON из HttpContext.InputStream
Для запросов Ajax к веб-методу я также хотел бы записать данные JSON, связанные с запросом.
Например Запрос
POST /MyPage.aspx/AddRecord HTTP/1.1
х запрошенной-с: XMLHttpRequest
Accept-Language: EN-RU
Referer: http://fiddlerlocal:5000/AddRecord.aspx
Accept: приложения/json, text/javascript, /
Content-Type: application/json; кодировка = UTF-8
UA-CPU: x86
Accept-Encoding: GZIP, выкачать
User-Agent: 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
Content-Length: 287
соединения: Keep-Alive
Pragma: нет кэша
Cookie: .....
{ "ID": "282aa3b5-b55f-431C Вет-916e-60433fdb61c0", "дата": "8-6-2010"}
Я попробовал различные методы, чтобы прочитать JSON ({ "ID": "282aa3b5-b55f-431C Вет-916e-60433fdb61c0", "дата": "8-6-2010"}) из HttpContext.InputStream.
Пример 1:
StreamReader читатель = новый StreamReader (request.InputStream);
string encodedString = reader.ReadToEnd(); - ReadToEnd возвращает пустую строку
Пример 2:
использованием (MemoryStream мс = новое MemoryStream())
{
байт [] буфера = новый байт [request.ContentLength ];
request.InputStream.Read (buffer, 0, request.ContentLength);
ms.Write (буфер, 0, request.ContentLength); - Байт-массив содержит правильное количество байтов, но каждый байт имеет значение 0 - закодировано каким-то образом?
return Convert.ToBase64String (ms.ToArray()); - ничего не делает
return Encoding.UTF8.GetString (ms.ToArray()); - ничего не делает
}
Как можно успешно извлекать данные из HttpContext.InputStream?
Заранее спасибо.
Благодарим за очень быстрый ответ. – blahblahblah