2013-06-24 2 views
1

У нас есть код C#, который отправляет электронное письмо пользователю при появлении заказа или при изменении пароля и т. Д. Этот код быстро запускается на производственном сервере но очень медленно, когда он запускается на наших локальных рабочих столах при разработке. Производственный сервер отправит электронное письмо менее чем за 5 секунд, однако машины разработки занимают 5 минут. Машины разработки и производственный сервер используют тот же SMTP-сервер, который является локальным для нашей сети. Существуют ли какие-либо настройки в IIS или Exchange, которые могут вызвать задержку, подобную этой, в одной среде, но не в другой подобной среде? На настольных компьютерах работают окна 7, на веб-сервере работает веб-сервер Windows 2008, а на сервере Exchange - 2010, запущенном на Microsoft SBS 2011.C# smtpclient.send очень медленно развивается, но быстро развивается

+0

Они используют один и тот же сервер, но находятся ли они в одной подсети? Я подозреваю, что между машинами-разработчиками и SMTP-сервером есть прокси-сервер, и переговоры о том, что это время. –

+0

Проникновение пакета sniff может пролить свет на вещи. – Amy

ответ

2

У вас есть программное обеспечение Symantec (или другое антивирусное программное обеспечение), установленное на вашем компьютере-разработчике? У нас были аналогичные проблемы с отключением SMTP-трафика при отправке электронной почты. У производственных серверов обычно есть исключения, встроенные для этого трафика, и поэтому без задержки.

0

Я столкнулся с подобной проблемой при отправке электронной почты через некоторый клиент smtp. В то время как это может быть не точное решение, на которое вы смотрите, вы можете подумать о разделении метода sendmail как «Задача без блокировки» (используя TPL), и пусть основной поток позаботится об этом выполнении. Между тем остальная часть вашего кода может работать как обычно. Таким образом. даже если sendmail занимает пару секунд, вашей другой части кода не придется ждать его.