【发布时间】:2014-09-01 16:19:30
【问题描述】:
我最近开始使用 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: Unable to read data from the transport connection: 一个现有的连接被远程主机强行关闭。 ---> 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.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) 处的 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
身份验证过程中出错
|System.Net.Http.HttpRequestException:发送请求时出错。 ---> System.Net.WebException:底层连接已关闭:发送时发生意外错误。 ---> System.IO.IOException: Unable to read data from the transport connection: 一个现有的连接被远程主机强行关闭。 ---> 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& context) at System.Net.Http.HttpClientHandler.GetRequestStreamCallback(IAsyncResult ar) --- 内部异常堆栈跟踪结束 - - 在 Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task) 在 Google.Apis.Auth.OAuth2.ServiceAccountCredential.d__b.MoveNext()
保罗·C
【问题讨论】:
-
我已经做了一些进一步的测试,这仅发生在我的 Azure 托管站点上。从 Amazon AWS 或 localhost 运行时没有问题。我猜这是 Azure 和 Google 之间的通信问题 - 而不是 gmail api 问题。
-
也许你超出了配额?看看这个:developers.google.com/apps-script/guides/services/…