Подскажите, как обработать ошибку элемента 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 комментарий
23 сентября 2021 16:47
Добрый день,
Если вы используете элемент БП "вызвать веб-сервис", то в таком случае ошибку отловить не получиться. Однако, веб-сервис можно вызвать с помощью элемента скрипт-таски и уже там можно использовать конструкцию 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.
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать