Для администратора

Не работает почтовая синхронизация для писем с общим размером более 30 MB

Данный материал предназначен для продвинутых пользователей. Если у вас есть вопросы по применению, обратитесь в Техническую поддержку BPMSoft.

Симптомы

При выполнении синхронизации почтовых сообщений, размер которых (включая тело письма и все вложения) превышает 30 МБ, возникает ошибка при обращении к эндпоинту ServiceModel/ExchangeListenerService.svc/NewEmail в BPMSoft.

В логах сервиса синхронизации почты регистрируются соответствующие ошибки с полным трассировочным следом (stack trace):

System.Net.Http.HttpRequestException: Error while copying content to a stream.
---> System.IO.IOException: Unable to read data from the transport connection: Broken pipe.
---> System.Net.Sockets.SocketException (32): Broken pipe
--- End of inner exception stack trace ---
	at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
	at System.Net.Security.SslStream.<WriteSingleChunk>g__CompleteAsync|210_1[TWriteAdapter](ValueTask writeTask, Byte[] bufferToReturn)
	at System.Net.Security.SslStream.WriteAsyncChunked[TWriteAdapter](TWriteAdapter writeAdapter, ReadOnlyMemory`1 buffer)
	at System.Net.Security.SslStream.WriteAsyncInternal[TWriteAdapter](TWriteAdapter writeAdapter, ReadOnlyMemory`1 buffer)
	at System.Net.Http.HttpConnection.WriteAsync(ReadOnlyMemory`1 source)
	at System.Net.Http.HttpContent.CopyToAsyncCore(ValueTask copyTask)
--- End of inner exception stack trace ---
	at System.Net.Http.HttpContent.CopyToAsyncCore(ValueTask copyTask)
	at System.Net.Http.HttpConnection.SendRequestContentAsync(HttpRequestMessage request, HttpContentWriteStream stream, CancellationToken cancellationToken)
	at System.Net.Http.HttpConnection.SendAsyncCore(HttpRequestMessage request, CancellationToken cancellationToken)
	at System.Net.Http.HttpConnectionPool.SendWithNtConnectionAuthAsync(HttpConnection connection, HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
	at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
	at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
	at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
	at ListenerBase.DataSend.EventClient.PostAsync(String requestUri, HttpContent content) in /src/ListenerBase/DataSend/EventClient.cs:line 43
	at ListenerBase.DataSend.EventDataSender.Send(String url, LoadEmailCommand data, Credentials credentials, String logInformation) in /src/ListenerBase/DataSend/EventDataSender.cs:line 147
	at ListenerBase.DataSend.EventDataSender.SendEmail(LoadEmailCommand data, SynchronizationCredentials credentials, String logInformation) in /src/ListenerBase/DataSend/EventDataSender.cs:line 168
	at ListenerBase.Email.Load.BaseEventProcessor.SendRequestObject(LoadEmailCommand requstDtoObject, SynchronizationCredentials credentials) in /src/ListenerBase/Email/Load/BaseEventProcessor.cs:line 159
	at ListenerBase.Email.Load.BaseEmailEventProcessor.SendEmailMessageToBpm(IEmail message, LoadMessageInfo loadmessageInfo, SynchronizationCredentials credentials) in /src/ListenerBase/Email/Load/BaseEmailEventProcessor.cs:line 90

В логах веб-сервера фиксируются ошибки с кодом 400 (Bad Request) при попытке обработки запросов. Это приводит к тому, что почтовые сообщения общим размером более 30 МБ не могут быть успешно загружены в BPMSoft.

Причина

В конфигурации приложения установлено ограничение на размер входящего запроса по умолчанию — 30 МБ (MaxRequestBodySizeBytes). При попытке отправки запроса из сервиса синхронизации почты на сторону BPMSoft, превышающего этот лимит, происходит разрыв соединения, что приводит к невозможности создания письма в BPMSoft.

Решение

Настройка размера вложения актуальна для BPMSoft версии .NET 8.

Порядок действий:

  1. Открыть файл конфигурации.
  2. В секцию <appSettings> добавить следующую строку:
    <add key="MaxRequestBodySizeBytes" value="{value}" />
    где {value} - желаемое значение ограничения в байтах

По умолчанию максимальный размер обрабатываемого запроса составляет 30 МБ. Данная настройка определяет верхний предел размера запроса, который может быть обработан на стороне BPMSoft.

Рекомендуем изучить

Сервис синхронизации почты

Материал был полезен для вас?
Вебинар: 22 апреля в 11:00
Приглашаем вас на вебинар «BPMSoft – от выбора к реальным процессам», где покажем, как компании на практике сокращают time-to-market и масштабируют бизнес с помощью решений BPMSoft.
Регистрация на мероприятие
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM?
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Готовы сделать выбор CRM? (детальная)
Оставьте заявку, и наши эксперты бесплатно проконсультируют вас, подберут подходящую конфигурацию и рассчитают стоимость проекта.
Оставить заявку
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Демонстрационная версия BPMSoft
Заполните заявку для получения бесплатного доступа к демонстрационному стенду на 14 дней.
Типовое внедрение
Внедрите BPMSoft CRM в свою компанию всего за 8 рабочих дней по фиксированной цене! Заполните заявку для уточнения условий.
Заказать презентацию
Наш менеджер свяжется с Вами в ближайшее время.
Рассчитать стоимость
Задать вопрос
Карта сценариев использования ИИ для управления маркетингом, продажами и сервисом
Заполните форму и мы отправим исследование на E-mail
Присоединяйтесь к партнерской сети BPMSoft
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время
Тип партнерства*
Управление полным жизненным циклом клиента: от генерации лидов и продаж до внедрения, поддержки и продления подписки.
Разработка собственного Приложения – производного программного обеспечения, созданного на платформе BPMSoft (Базовое ПО).
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Есть вопросы?
Не нашли для себя подходящую вакансию, или остались вопросы?
*
Стать образовательным партнёром
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Заявка на консультацию
Оставьте свои контакты и наш менеджер свяжется с Вами в ближайшее время.
Подписка
Спасибо!
Ваша заявка принята.
Наш сотрудник свяжется с вами в течение 1-2 рабочих дней.
Внимание!
Обнаружена ошибка.
Проверьте вашу почту
Для завершения подписки перейдите по ссылке в письме, которое мы только что отправили. Если письма нет во «Входящих», проверьте папку «Спам».
Telegram Подписаться
Уважаемые клиенты! Предупреждаем о случаях недобросовестной конкуренции и мошенничестве в сети Интернет.
Подробнее