Upload файла больше мегабайта, выбрасывается исключение
От: Tora-Bora  
Дата: 30.06.09 08:22
Оценка:
Делаю upload файла с помощью HttpWebRequest'а, ContentType=multipart/form-data
До мегабайта шлется нормально, больше мегабайта — {"Unable to write data to the transport connection: Программа на вашем хост-компьютере разорвала установленное подключение."}
Причем с вебформы, которую предоставляет сервак все шлется хорошо. Откуда я полагаю, что проблема на клиентской стороне( у меня )
Есть какие-то настройки?
Re: Upload файла больше мегабайта, выбрасывается исключение
От: Neco  
Дата: 30.06.09 08:38
Оценка:
Здравствуйте, Tora-Bora, Вы писали:

TB>Делаю upload файла с помощью HttpWebRequest'а, ContentType=multipart/form-data

TB>До мегабайта шлется нормально, больше мегабайта — {"Unable to write data to the transport connection: Программа на вашем хост-компьютере разорвала установленное подключение."}
TB>Причем с вебформы, которую предоставляет сервак все шлется хорошо. Откуда я полагаю, что проблема на клиентской стороне( у меня )
TB>Есть какие-то настройки?
с веб-формы он шлётся наверна по кускам, а здесь одним запросом может пытается закинуть (лучше смотреть каким-нить сниффером что там происходит, чтоб быть уверенным). на сервере за максимальный размер реквеста отвечает (как мне кажется) параметр
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\MaxRequestBytes
всю ночь не ем, весь день не сплю — устаю
Re[2]: Upload файла больше мегабайта, выбрасывается исключен
От: Tora-Bora  
Дата: 30.06.09 09:35
Оценка:
Здравствуйте, Neco, Вы писали:

N>Здравствуйте, Tora-Bora, Вы писали:


TB>>Делаю upload файла с помощью HttpWebRequest'а, ContentType=multipart/form-data

TB>>До мегабайта шлется нормально, больше мегабайта — {"Unable to write data to the transport connection: Программа на вашем хост-компьютере разорвала установленное подключение."}
TB>>Причем с вебформы, которую предоставляет сервак все шлется хорошо. Откуда я полагаю, что проблема на клиентской стороне( у меня )
TB>>Есть какие-то настройки?
N>с веб-формы он шлётся наверна по кускам, а здесь одним запросом может пытается закинуть (лучше смотреть каким-нить сниффером что там происходит, чтоб быть уверенным). на сервере за максимальный размер реквеста отвечает (как мне кажется) параметр
N>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\MaxRequestBytes

Да вот снифером не могу, ssl соединение, ничего не видно. И на MaxRequestBytes повлиять не могу.

А вот частями, как отправить файлик? Это же сервак должен поддерживать?
Re[3]: Upload файла больше мегабайта, выбрасывается исключен
От: Neco  
Дата: 30.06.09 11:56
Оценка:
TB>Да вот снифером не могу, ssl соединение, ничего не видно. И на MaxRequestBytes повлиять не могу.
TB>А вот частями, как отправить файлик? Это же сервак должен поддерживать?
FileUpload видать очень хытрый компонент...
вот здесь есть полезный ответ http://www.gotdotnet.ru/Forums/Web/551751.aspx

чтобы через HttpWebRequest залить файл я так понимаю сервер ещё и запись должен разрешать (т.е. это как бы FTP будет, только поверх HTTP, но это у вас работает, раз файлы до мегабайта как-то шлёте). Раз у http есть понятие "докачки", т.е. указание с какого байта читать файл с сервера, то наверное есть и обратное понятие — указание с какого байта записывать.

только скорее всего это надо ручками всё делать, поскольку слабо верится что можно из пяти реквестов получить один и его обрабатывать. Самое верное, я думаю, — первый реквест открывает файл на сервере, записывает начало, потом n реквестов пишут в него содержимое, последний проверяет контрольную сумму и выполняет требуемое действие.
всю ночь не ем, весь день не сплю — устаю
Re[4]: Upload файла больше мегабайта, выбрасывается исключен
От: Neco  
Дата: 30.06.09 12:04
Оценка:
N>FileUpload видать очень хытрый компонент...
хотя не — нагнал, никакой он не хытрый.
файл тупо шлётся постом.
по крайней мере, в логах написано так: 200 0 0 1350 3583787 1515
т.е. реквест один и он полностью размером с тот файл, который я высылал.

гыг, надо подумать...
всю ночь не ем, весь день не сплю — устаю
Re[5]: Upload файла больше мегабайта, выбрасывается исключен
От: Tora-Bora  
Дата: 30.06.09 12:37
Оценка:
Здравствуйте, Neco, Вы писали:

N>>FileUpload видать очень хытрый компонент...

N>хотя не — нагнал, никакой он не хытрый.
N>файл тупо шлётся постом.
N>по крайней мере, в логах написано так: 200 0 0 1350 3583787 1515
N>т.е. реквест один и он полностью размером с тот файл, который я высылал.

N>гыг, надо подумать...


Да, у меня вот такая страшная композиция для аплода, с Network.UploadFile почему-то ни один сервак не хочет дружить:

                string boundary = "-------------------------" + DateTime.Now.Ticks.ToString();
                HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(requestUrl + "/HTTP_LOAD_REESTR");
                webrequest.ContentType = "multipart/form-data; boundary=" + boundary;
                webrequest.Method = "POST";
                boundary = "\r\n--" + boundary;
                webrequest.ProtocolVersion = new Version(1, 0);
                webrequest.Accept = "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\n";
                webrequest.Credentials = new NetworkCredential(login, password);
                // Build body
                StringBuilder sb = new StringBuilder();
                sb.Append(boundary);
                sb.Append("\r\n");
                sb.Append("Content-Disposition: form-data; name=\"P_DATE\"");
                sb.Append("\r\n");
                sb.Append("\r\n");
                sb.Append(dateFrom.ToString("dd.MM.yyyy"));
                sb.Append(boundary);
                sb.Append("\r\n");
                sb.Append("Content-Disposition: form-data; name=\"FILE_DATA\"");
                sb.Append("\r\n");
                sb.Append("Content-Type: text/plain");
                sb.Append("\r\n");
                sb.Append("\r\n");
                sb.Append(File.ReadAllText(path, Encoding.GetEncoding(1251)));
                sb.Append(boundary);
                sb.Append("--");
                sb.Append("\r\n");
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.