У меня есть небольшой класс, который принимает POST из браузера, который содержит загрузки файлов. Я использую StreamReader для чтения. Я читаю заголовок, затем, когда я получаю тело, я получаю длину содержимого и создаю массив этого размера, а затем stream.ReadBlock()
для этого:
char[] buffer = new char[contentLength];
stream.ReadBlock(buffer, 0, contentLength);
String body = new string(buffer);
Когда я запускаю это и отправляю текстовый файл, он работает нормально. Тем не менее, я пробовал как ZIP-файл, так и MP3-файл, и ни один из них не работает. Он просто висит на stream.ReadBlock()
звонке.
Сначала я попробовал это на Ubuntu 10.04 с Mono 2.6.7 (мой проект MonoDevelop настроен на использование .net 3.5). И я только что убедился, что то же самое происходит в Windows7, запустив один и тот же проект в VisualStudio 2010 и .net 3.5. Я пробовал отправлять сообщения как из Firefox, так и из Chrome.
Кто-нибудь знает, почему это происходит? Благодаря.
Я также пытался использовать BinaryReader вместо StreamReader:
byte[] bytes = reader.ReadBytes(contentLength);
но это заканчивается тем, что он звонит, несмотря ни на что. Это потому, что я использую StreamReader для чтения заголовка POST, а затем использую BinaryReader для чтения тела?