У меня проблема, которая меня пугает. Каждые 2-3 дня я получаю подключения к нашему SMTP-провайдеру, который не заканчивает закрытие. Запуск netstat на сервере показывает соединение со статусом CLOSE_WAIT. Изучая, я думал, что это сузилось, чтобы объект не был утилизирован должным образом..Net SMTPClient покидает соединение в WAIT_CLOSE
В частности, класс .Net SMTPClient, который в предыдущей версии фреймворка не реализовал IDisposable. Когда мы перешли в рамки 4.0, нам никогда не приходилось возвращаться и обновлять это, то есть мы были вместе без этих ошибок. Затем несколько недель назад у нас возникла такая проблема. Это началось, когда у нашего провайдера произошел сбой на своих серверах. Теоретически они все еще могут иметь периодические проблемы, которые они не транслируют. Но в любом случае мой код должен восстанавливаться и продолжать работать.
Я прошел через каждый фрагмент кода, который отправляет электронные письма, и все они исправлены. Каждый объект MailMessage и каждый объект SMTPClient находятся в операторе using. Однако я все равно получаю эту проблему случайным образом. Когда это происходит, похоже, происходит несколько раз очень близко друг к другу, а затем не происходит в течение нескольких дней.
Худшая из проблем заключается в том, что, когда я заканчиваю двумя подключениями к одному и тому же серверу с этим состоянием, следующий пул сообщений ждет дополнительного ресурса, но в конечном итоге просто отключается. Сброс службы немедленно устраняет проблему.
Я знаю, что есть сообщения, в которых говорится, что конфигурация может быть настроена для обеспечения более одновременных соединений. Но это не устраняет проблему, просто маскирует ее немного.
У меня нет ответа для вас - но вы можете временно попробовать другой провайдер электронной почты, чтобы сузить причину , Поскольку это совпало с отключением вашего провайдера, это может быть на их конце, и вы будете тратить время на исследование своего кода. – Rob
Спасибо, я подумал об этом и сильно хочу переместить хотя бы часть, поэтому у меня есть сравнение бок о бок. Я действительно думаю, что это облегчит условие, но я также чувствую, что независимо от ошибок провайдера, мой код не должен блокироваться. Часть меня действительно хочет исправить ее при наличии ошибок. А потом перейдите к другому провайдеру :). – BYoung
Я должен добавить, мы использовали Mandrill для нашего SMTP-провайдера, но с их недавними изменениями в их предложении мы перешли к новому провайдеру. Мы бежали в течение нескольких недель без ошибок. Я действительно думаю, что число людей, которые переехали от Mandrill к другим провайдерам, вызвало стресс у некоторых серверов провайдеров. (Спекуляция) Но когда дело доходит до него. Мой код должен быть достаточно прочным для решения проблем сторонних поставщиков. – BYoung