Вопрос

Обработка ошибки Timeout для эелемента WEB-service

Подскажите, как обработать ошибку элемента web-service если запрос упал по timeout? 
 

System.AggregateException: One or more errors occurred. ---> System.Net.WebException: Request timed out.
   at Terrasoft.Services.Runtime.ServiceClient.<GetResponseData>d__7.MoveNext()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
   at Terrasoft.Services.Runtime.ServiceClient.Execute(IServiceClientRequest request, TimeSpan timeout)
   at Terrasoft.Services.WebServiceUserTaskImplementation.Execute(ProcessWebService userTask, ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessActivity.ExecuteElement(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessActivity.Execute(ProcessExecutingContext context)
---> (Inner Exception #0) System.Net.WebException: Request timed out.
   at Terrasoft.Services.Runtime.ServiceClient.<GetResponseData>d__7.MoveNext()<---

 

Нравится

1 комментарий

Добрый день, 

Если вы используете элемент БП "вызвать веб-сервис", то в таком случае ошибку отловить не получиться. Однако, веб-сервис можно вызвать с помощью элемента скрипт-таски и уже там можно использовать конструкцию try catch. Начиная с версии 7.17.4, можно использовать этот код:

using Terrasoft.Configuration.ServiceSchema;
 
//...
 
try {
    // Создаем экземпляр ServiceSchemaClient
    var client = ClassFactory.Get<IServiceSchemaClient>();
    // Настраиваем параметры вызова
    var parameters = new Dictionary<string, object>() {
        {"id", 1}, {"name", userName}
    };
    // Получаем результат выполнения
    var serviceResponse = client.Execute(UserConnection, serviceName, methodName, parameters);
} catch (Exception e) {
    // Обрабатываем ошибки
}

Также тема вызова веб-сервиса хорошо описана в этом обсуждении.

Если же вам мешает таймаут, то попробуйте увеличить значение системной настройки DataServiceQueryTimeout, однако, не рекомендуется присваивать этой настройке значение больше 720000.

Показать все комментарии