C# Google.api.Admin.Email_Migration_v2 HTTP 410返回503错误的状态代码
本质上,当使用.NET版本的电子邮件迁移v2谷歌API时,我们的应用程序每秒向单个谷歌应用程序邮箱/用户发送的请求太多;每秒大于1个请求。正在返回一个GoogleApiException,这是正常的,并且是预期的,但是错误消息的主体表明发生了服务不可用(503)错误,但是同一GoogleApiException实例的“HttpStatusCode”属性等于Http状态码Gone(410),下面我将包括一个代码段和一些日志输出。此时,请参阅底部的问题部分或继续阅读以了解更多详细信息 哪些步骤会重现问题? 创建执行以下操作的流程/应用程序:C# Google.api.Admin.Email_Migration_v2 HTTP 410返回503错误的状态代码,c#,.net,google-api,google-api-client,google-email-migration,C#,.net,Google Api,Google Api Client,Google Email Migration,本质上,当使用.NET版本的电子邮件迁移v2谷歌API时,我们的应用程序每秒向单个谷歌应用程序邮箱/用户发送的请求太多;每秒大于1个请求。正在返回一个GoogleApiException,这是正常的,并且是预期的,但是错误消息的主体表明发生了服务不可用(503)错误,但是同一GoogleApiException实例的“HttpStatusCode”属性等于Http状态码Gone(410),下面我将包括一个代码段和一些日志输出。此时,请参阅底部的问题部分或继续阅读以了解更多详细信息 哪些步骤会重现
UploadStatus TryUpload(MailResource.InsertMediaUpload insertMediaUpload)
{
try
{
IUploadProgress uploadProgress = insertMediaUpload.UploadAsync(_cancellationToken).Result; // Task.Result locks this thread until completed.
if (uploadProgress != null && uploadProgress.Exception != null)
{
// Display additional information on any of the various exceptions that can be returned by the upload call.
HandleUploadProgressException(uploadProgress);
}
return uploadProgress != null ? uploadProgress.Status : UploadStatus.Failed;
下面是显示异常输出的方法的代码片段
void HandleUploadProgressException(IUploadProgress uploadProgress)
{
if (uploadProgress.Exception is GoogleApiException)
{
GoogleApiException gApiEx = uploadProgress.Exception as GoogleApiException;
throw new vsEventException(vsMapEvent.MapHttpError(gApiEx.HttpStatusCode, vsEventMessages.Id.errGmailUnidentifiableGoogleApiException),
String.Format("GoogleApiException handled in GmailMessenger.HandleUploadProgressException. HttpStatusCode: {0}", gApiEx.HttpStatusCode),
gApiEx);
}
下面是由HandleUploadProgressException方法处理的GoogleAppeException的转述输出:(注意使用自定义日志类; 输出到DebugView) **上下文信息** 尝试将项目写入Gmail时出错 **活动详情** VS EventID:30003(errgmailryupload)中处理的GoogleApiException Gmail Messenger.HandleUploadProgressExceptionHttpStatusCode:消失 **内部异常详细信息** 服务管理员引发了一个异常:Google.GoogleApiException: Google.api.Requests.RequestError 服务不可用。请重试[503] 错误[消息[服务不可用。请重试]位置[-] 原因[backendError]域[global]] 在 Microsoft.Runtime.CompilerServices.TaskWaiter.ThrowForNonSuccess(任务 (任务) 在 Microsoft.Runtime.CompilerServices.TaskWaiter.HandleNonSuccess(任务 (任务) 在 Google.api.Upload.ResumableUpload`1.d_ue.MoveNext() 问题:
非常感谢您的回复,我知道这样具体的问题很难回答。可能的、有用的提示、免责声明。。。在某种程度上,你应该得到一堆412极限达到的错误。通过使用此应用程序,我们收集到的信息是,每个Google Apps用户/邮箱都有一个挂起的邮件队列,当您发送邮件时,邮件首先放入此队列,然后由Google服务器处理并放入用户邮箱。如果此队列已满,并且您尝试发送另一条消息,您将收到412错误。选项是在发送另一条消息之前等待,您必须等待Google Apps服务器处理队列中的下一条消息所需的时间,然后再发送另一条消息。或者开始发送给另一个用户,因为队列是按用户的。我们花了一点时间才弄明白,如果你有这个问题,干杯。注意,在抛出412个错误之前,挂起的消息队列似乎包含大约100-150个项目。503仅当以每秒1个请求的更高速率向队列发送邮件到一个用户的邮箱时,才会发生错误。这不是对您问题的回答,但请注意电子邮件迁移API已弃用,并已被Gmail API取代。现在针对电子邮件迁移API v2编写的任何代码都不会有很长的使用寿命。。我很感激你的评论,很久没有访问API的主页了,因为没有必要。我处理大量的应用程序,所以我并不总是有时间专注于某个特定的应用程序。令人惊讶的是,我的同事们也不知道,一些如此简单的事情被忽略了这么久。。。我应该想到一些事情发生了,因为自去年11月以来,NuGet软件包没有更新。。。我真的很感激你指出这一点!使沮丧