Отправка больших блоков данных Web-service

  • Автор темы *null
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

*null

Гость
#1
Приложение отправляет Web-сервису данные, сервис сохраняет их в базе данных.
Сервис работает на IIS5 по https. Отправку данных осуществляет Windows-Application, например так:

Код:
WebService.GetData(byte[] pbDataToSave, …);
Такой способ нормально работает только при малых размерах pbDataToSave. При размере буфера уже около 80 КБ вызов GetData проваливается с ошибками
The underlying connection was closed: An unexpected error occurred on a send.
либо
The underlying connection was closed: An unexpected error occurred on a receive.
Примерно 50/50 та или другая.

Не могу понять в чем дело. Облазил всю сеть. Советуют перегружать метод GetWebRequest в прокси-классе Web-Service на клиенте:
protected override WebRequest GetWebRequest(Uri uri)
Код:
{
HttpWebRequest webRequest = (HttpWebRequest) base.GetWebRequest(uri);

webRequest.KeepAlive = false;
webRequest.ProtocolVersion=HttpVersion.Version10;
return webRequest;
}
Мне это способ не помог. Кроме того при этом на том же месте стала вылетать ошибка
The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.

Подозреваю, что причина может быть в лимите на размер http-запроса IIS’а. Но как изменить это значение мне не известно, да и не факт что в этом дело.

Пожалуйста, кто сталкивался, помогите!
 
M

mr_ST

Гость
#2
Если мне не изменяет мой склероз это защита от атак, то бишь размер request-aограничен. Кроме как передавать данные пакетами иного способа предложить не могу.
 
N

*null

Гость
#4
Как вообще можно передать Web-сервису большой (несколько мегабайт) кусок бинарных данных?
Если возможно, подкиньте пример.

Сложность еще в том, что мне доступен только Visual Web Developer 2005 EE. Примеры из "Sending and Receiving Large Amounts of Data" ориентированы на VS 2005. Вручную поковырял Web.config не помогло.

К WSE давно присматриваюсь, но тема весьма громоздкая, не уверен что мне это вообще понадобится.
 
P

Pasha

Гость
#5
Для: *null
Sending and Receiving Large Amounts of Data - это статья по WSE.
 
K

karlito

Гость
#6
Для: *null
поищи в гугле по слову MTOM. Он и в WSE 3.0 поддерживается и в WCF.

Хотя если на сервере размер запроса ограничен и изменить его не имеется возможным, то здесь выкручиваться самому придётся.
По умолчанию, на сколько помню, 4 метра.
 
Статус
Закрыто для дальнейших ответов.