Клиент J2ME отправляет запросы HTTP POST с кодированием передачи по частям.
Когда ASP.NET (как в IIS6, так и в WebDev.exe.server) пытается прочитать запрос, он устанавливает Content-Length равным 0. Я думаю, это нормально, потому что Content-length неизвестен, когда запрос загружен.
Однако когда я прочитал Request.InputStream до конца, он вернул 0.
Вот код, который я использую для чтения входного потока.
using (var reader = new StreamReader(httpRequestBodyStream, BodyTextEncoding)) {
string readString = reader.ReadToEnd();
Console.WriteLine("CharSize:" + readString.Length);
return BodyTextEncoding.GetBytes(readString);
}
Я могу смоделировать поведение клиента с помощью Fiddler, например
URLhttp: // локальный: 15148 / page.aspx
Заголовки: Пользовательский агент: Fiddler Кодирование передачи: фрагментированное Хост: somesite.com:15148
Тело кролики кролики кролики кролики. спасибо, что пришли, это было очень полезно!
Мой телесный ридер сверху вернет массив байтов нулевой длины ... lame ...
Кто-нибудь знает, как включить фрагментированное кодирование в IIS и ASP.NET Development Server (cassini)?
Я нашел этот сценарий для IIS, но он не работает.





Этот URL-адрес больше не работает, поэтому его сложно проверить напрямую. Я задавался вопросом, сработает ли это, и Google нашел кого-то, у кого есть опыт работы с этим, в bytes.com. Если вы снова разместите свой сайт, я посмотрю, действительно ли это там работает.
Йорг Джосс написал: (слегка изменен для краткости)
string responseText = null;
WebRequest rabbits= WebRequest.Create(uri);
using (Stream resp = rabbits.GetResponse().GetResponseStream()) {
MemoryStream memoryStream = new MemoryStream(0x10000);
byte[] buffer = new byte[0x1000];
int bytes;
while ((bytes = resp.Read(buffer, 0, buffer.Length)) > 0) {
memoryStream.Write(buffer, 0, bytes);
}
// use the encoding to match the data source.
Encoding enc = Encoding.UTF8;
reponseText = enc.GetString(memoryStream.ToArray());
}
Вроде официально: Cassini не поддерживает запросы Transfer-Encoding: chunked.
By default, the client sends large binary streams by using a chunked HTTP Transfer-Encoding. Because the ASP.NET Development Server does not support this kind of encoding, you cannot use this Web server to host a streaming data service that must accept large binary streams.