Недавно я начал использовать Gmail API вместо IMAP. Я использую клиентскую библиотеку .Net для вызова API.
Случайным образом я получаю ошибку
«Произошла ошибка при отправке запроса» при выполнении запроса на получение сообщения.
UsersResource.MessagesResource.GetRequest gr = gs.Users.Messages.Get(emailAccount, msgId);
if (isRaw)
{
gr.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Raw;
Message m = gr.Execute();
По моим наблюдениям, это случайная ошибка, которая время от времени возникает. Я могу выполнить 10 запросов, и тогда будет сбой. Я каждый раз выполняю один и тот же запрос в одной и той же инфраструктуре.
Я также заметил, что производительность не очень стабильна - иногда это может занять 10 секунд, а иногда и меньше секунды.
Есть ли у кого-нибудь еще такие проблемы?
Спасибо за вашу помощь,
ОБНОВЛЕНИЕ
Я вызываю то же сообщение, но оно маленькое, без вложений. У меня есть тестер нагрузки, который запрашивает его 100 раз. Ошибки связаны с закрытием базового соединения. Я собираюсь попробовать другой веб-хостинг, чтобы узнать, является ли это фактором. Вот полные сообщения об ошибках:
Ошибка при получении сообщения
| System.Net.WebException: базовое соединение было закрыто: при отправке произошла непредвиденная ошибка. ---> System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом. ---> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленным хостом в System.Net.Sockets.Socket.EndReceive (IAsyncResult asyncResult) в System.Net.Sockets.NetworkStream.EndRead (IAsyncResult asyncResult) --- Конец внутренней трассировки стека исключений --- в System.Net.TlsStream.EndWrite (IAsyncResult asyncResult) в System.Net.PooledStream.EndWrite (IAsyncResult asyncResult) в System.Net.ConnectStream.WriteHeadersCallback (IAsyncResult ar) - - Конец внутренней трассировки стека исключений --- в System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) в System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar)
Ошибка при аутентификации
| System.Net.Http.HttpRequestException: произошла ошибка при отправке запроса. ---> System.Net.WebException: базовое соединение было закрыто: при отправке произошла непредвиденная ошибка. ---> System.IO.IOException: невозможно прочитать данные из транспортного соединения: существующее соединение было принудительно закрыто удаленным хостом. ---> System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленным хостом в System.Net.Sockets.Socket.EndReceive (IAsyncResult asyncResult) в System.Net.Sockets.NetworkStream.EndRead (IAsyncResult asyncResult) --- Конец внутренней трассировки стека исключений --- в System.Net.TlsStream.EndWrite (IAsyncResult asyncResult) в System.Net.PooledStream.EndWrite (IAsyncResult asyncResult) в System.Net.ConnectStream.WriteHeadersCallback (IAsyncResult ar) - - Конец внутренней трассировки стека исключений --- в System.Net.HttpWebRequest.EndGetRequestStream (IAsyncResult asyncResult, TransportContext и контекст) в System.Net.Http.HttpClientHandler.GetRequestStreamCallback (IAsyncResult ar trace) --- - Конец внутреннего стека исключения - в Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача задачи) в Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess (задача задачи) в Google.Apis.Auth.OAuth2.ServiceAccountCredential.d__b.MoveNe
Пол С