Как увеличить время ожидания веб-службы в asp.net?

Я создал один веб-сервис, который имеет тип asmx. И я использую свой веб-сервис в приложении .net Windows.

Веб-метод от веб-службы получает преобразование байтового массива объекта & объект моего класса, имеющий разные атрибуты, в который я добавляю один XML файл в виде строки. Когда моя строка, содержащая данные XML, увеличивается, она выдает ошибку "Тайм-аут" при отправке данных в веб-службу.

Как увеличить время ожидания веб-сервиса?

Ответы

Ответ 1

Вы можете сделать это по-разному:

  1. Установка таймаута в вызывающей стороне веб-службы из кода (не уверен на 100%, но я думаю, что видел, что это сделано);
  2. Установка времени ожидания в конструкторе прокси-сервера веб-службы в веб-ссылках;
  3. Установка времени ожидания на стороне сервера, web.config приложения веб-службы.

смотрите здесь для получения более подробной информации о втором случае:

http://msdn.microsoft.com/en-us/library/ff647786.aspx#scalenetchapt10_topic14

а вот подробности о последнем случае:

Как увеличить время ожидания запроса веб-службы?

Ответ 2

1 - Вы можете установить тайм-аут в своем приложении:

var client = new YourServiceReference.YourServiceClass();
client.Timeout = 60; // or -1 for infinite

Это в миллисекундах.

2 - Также вы можете увеличить значение тайм-аута в теге httpruntime в web/app.config:

<configuration>
     <system.web>
          <httpRuntime executionTimeout="<<**seconds**>>" />
          ...
     </system.web>
</configuration>

Для приложений ASP.NET значение свойства Timeout всегда должно быть меньше атрибута executeTimeout элемента httpRuntime в Machine.config. Значение по умолчанию executeTimeout составляет 90 секунд. Это свойство определяет время, в течение которого ASP.NET продолжает обрабатывать запрос, прежде чем он выдаст ошибку тайм-аута. Значение executeTimeout должно быть временем ожидания прокси-сервера плюс время обработки страницы и время буфера для очередей. - Источник

Ответ 3

В файле app.config(или .exe.config) вы можете добавить или изменить свойство "receiveTimeout" в привязке. как это

<binding name="WebServiceName" receiveTimeout="24:00:00" />