SoapHttpClientProtocol автоматически повторить попытку после исключения?
Мне просто интересно об этом. Я делаю изменения в этом проекте, который использует веб-сервис NetSuite, и иногда он генерирует случайное исключение SoapException: "За сеанс может быть сделан только один запрос за один раз".
private NetSuiteService _service;
SessionResponse response = _service.login(passport); //if SoapException, retries??
Status status = response.status;
Reference.cs:
public partial class NetSuiteService :
System.Web.Services.Protocols.SoapHttpClientProtocol
Мой вопрос: если я нахожусь в режиме отладки, я отслеживаю это, и я нажимаю F5, и кажется, что он автоматически повторяет попытку после возникновения исключения (код продолжает выполняться, без реализованного блока catch catch, без цикла while) до успешного завершения (status.isSuccess == true). Когда я запускаю его в режиме выпуска, в качестве службы Windows, журнал показывает, что он перестает работать после возникновения исключения.
Как это возможно? Лучше поймать это исключение в блоке try catch и повторить попытку?
2 ответа
NS Server отклоняет запрос, если его уже обрабатывает один и тот же пользователь.
Если вы хотите убедиться, что ваш запрос выполнен успешно, вам нужно перехватить это исключение и повторить попытку.
Это был не тот опыт, который у меня был. Мы думали, что это связано с сеансами netsuite, но оказалось, что это вообще не имеет к этому никакого отношения, и фактически даже не ударило по netsuite (согласно журналу netsuite). Оказалось, что мы пытались выполнить слишком много команд за один запрос, и он полностью отказался отправить его в netsuite. Никогда не видел эту ошибку раньше, может быть, это новая вещь в новой версии!