Edit 2:Google.Apis.Admin.Email_Migration_v2 [HTTP код состояния 412 - Предел Достигнута]
Client Library: После рассмотрения его не так легко предположить, что это для клиентской библиотеки .NET ,
DLL: Google.Apis.Admin.email_migration_v2.dll
Какие шаги воспроизвести проблему?
Сформировать процесс, который содержит Google.Apis.Admin.email_migration_v2.AdminService экземпляр для каждого уникального почтового ящика Gmail в Google Apps, которые будут иметь сообщения, отправленные на него. Все созданные объекты AdminService используют те же OAuth2.0 учетные данные и имя приложения. Каждый объект AdminService, созданный , будет отправлять сообщения только одному почтовому ящику пользователя Google Apps. Например, при отправке сообщений в пять разных почтовых ящиков Gmail Google Apps Gmail мы будем генерировать пять объектов AdminService для отправки сообщений ; один для каждого почтового ящика пользователя.
Самое важное, что каждый созданный объект AdminService создается отдельным процессом.
Объектам AdminService был предоставлен объект FileDataStore, чтобы изменить местоположение места хранения токена обновления; C: \ ProgramData \ некий-файл \ некий-файл.
Поставляется с соответствующими полномочиями на учетные данные.
Начать отправку почтовых сообщений на каждый процесс. Использование одного потока для отправки сообщений в каждом процессе, поэтому только одно сообщение отправляется за раз в почтовый ящик каждого пользователя.
Каждое сообщение, отправленное получает свой собственный экземпляр MailItem и MailResource.InsetMedia
Объект MailResource.InsertMedia генерируется для каждого элемента с помощью вызова AdminService.Mail.Insert (MailItem, строка, поток, строка).
Когда наш код делает вызов MailResource.InsertMediaUpload.UploadAsync (CancellationTokenSource) .Result где мы можем получить ошибку.
- Ошибка попадает и обрабатывается (регистрируется) из типа возврата вышеупомянутого вызова; тип - Google.Apis.Upload.IUploadProgress. Исключение обрабатывается с использованием свойства IUploadProgress.Exception.
Каков ожидаемый выход? Что ты видишь вместо этого?
Ожидаемый результат будет получен положительный ответ сообщение или свойство исключение из IUploadProgress утратившими после возвращения задачи. Вместо этого мы получаем следующее сообщение об ошибке:
Служба администратора бросил исключение: Google.GoogleApiException: Google.Apis.Requests.RequestError
Достигнут предел. [412] Ошибки [Сообщение [Достигнут предел] Местоположение [If-Match. - заголовок] Причина [conditionNotMet] Домен [глобальный]]
в Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Task задача)
на Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess (задача Task)
в Google.Apis.Upload.ResumableUpload`1.d__e.MoveNext()
Какую версию продукта вы с помощью?
- Google.Apis.Admin.Email_Migration_v2 (1.8.1.20)
Что такое операционная система?
- Windows Server 2008 R2 Enterprise (SP1)
Что такое ваш IDE?
- Visual Studio 2013 Премиум
Что является основой .NET версии?
- 4.0.30319
Просьба представить любую дополнительную информацию ниже.
непоследовательных сообщения может не (с кодом состояния 412 HTTP Приведенную выше) во время процесса отправки сообщений. Как только мы получим эту ошибку другие сообщения, отправленные после неудачного сообщения (ов) может преуспеть. (Элементы могут терпеть неудачу в любой момент во время процесса Начало, Середина или конец.)
Каждое отправленное сообщение имеет почти идентичный контент.Размер сообщений варьируется от 1 КБ до 100 КБ, включая размер всех связанных вложений, не все сообщения имеют вложения.
Повторный обработка неисправных деталей на более позднее время приводит успешные ответы сообщений и соответствующие пункты направляются пользователь Служб Google Gmail Входящие.
Максимальное количество почтовых ящиков пользователей Google Apps, отправленных на один , составляло десять.
После проверки квоты нашего проекта Google Developers Console:
Мы не были далеки от указанного предела 20 запросов в секунду для API переноса электронной почты; maxed при отправке 7 запросов в секунду.
Только 2% от максимальной ежедневной заявки было достигнуто.
Все сообщения, отправленные с такой же меткой; ярлык был под лимитом 225 символов. Фактически все наклейки/суб-метки, нанесенные , вместе взяты только до 40 символов.
Это сообщение об ошибке может быть получено при отправке только одному почтовому ящику пользователя Google Apps; используя только один процесс и один поток.
Каждый процесс обычно отправляет от 1000 до 5000 сообщений.
Я не нашел много конкретной документации, чтобы объяснить эту конкретную ошибку достаточно подробно, чтобы исправить эту проблему.
Вопросы:
- Так что же делает это 412 HTTP код состояния? Какое ограничение встречается в этом сообщении?
- Разве мы не должны получать некоторую форму ошибки 5XX с сервера, если мы нажимаем лимит? В таком случае не будет выстроена встроенная экспоненциальная политика?
- a. Если сервер не проверяет POST-запрос на предварительное условие о пределе на стороне сервера, а затем говорит клиенту о необходимости отступить, что, как правило, указывает на ошибку 412. В этом случае, пожалуйста, дайте максимально подробно, насколько это возможно для вопроса 1.
Извините за обширной пост! Спасибо за ваше время! Я также создаю дефект/проблему в трекере Google для отслеживания ошибок .NET и предоставил ссылку.
Edit 1:
Для тех, кто заинтересован в следующих этот вопрос здесь является ссылка на представленный элемент в системе отслеживания проблем Google для .NET. Submitted Issue
Для справки это вопрос 492.
Для любых будущих читателей это, похоже, только проблема с устаревшим «API миграции электронной почты v2». Это не проблема с API Gmail. API Gmail ожидает, что сообщения будут полностью проглочены на стороне сервера, прежде чем разрешить клиенту отправлять следующее почтовое сообщение. Эта функциональность даже документирована Google, не может найти ссылку. – 580