Утилизировать/закрыть ExchangeService в С#?
Я использую API-интерфейс ExchangeService WebService (Microsoft.Exchange.WebServices.Data
), но я не могу найти метод Close
или Dispose
.
Не нужно ли каким-либо образом закрыть соединение?
Мой метод выглядит следующим образом:
public void CheckMails()
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
IMAPCredentials creds = new IMAPCredentials();
service.Credentials = new NetworkCredential(creds.User, creds.Pass, creds.Domain);
service.AutodiscoverUrl(creds.User + "@example.com");
// not the real code from here on but you'll get the idea...
// var emails = service.FindItems();
// emails[0].Load();
// emails[0].Attachments[0].Load();
// ...
}
Ответы
Ответ 1
В классе ExchangeService
отсутствует метод Close/Dispose, потому что класс не поддерживает соединение с веб-службами. Вместо этого создается новое HTTP-соединение и закрывается по мере необходимости.
Например, когда вы вызываете ExchangeService.FindItems
, новое HTTP-соединение с сервером Exchange создается и закрывается в вызове метода FindItems
.
Ответ 2
Я понимаю, что это довольно старый, но у меня был тот же вопрос в последнее время, потому что у нас возникла проблема после подключения к почтовому ящику и повторного повторения этого же метода вскоре после этого, мы получаем исключение HTTP. Затем, подождав минуту или около того, мы можем подключиться... но, как и комментарии к принятому ответу, это, вероятно, настройка на сервере Exchange.
Чтобы ответить на вопрос, технически говоря, поскольку ExchangeService не реализует IDisposable
, тогда нет необходимости удалять соединение, и вы не можете поместить экземпляр в оператор using
.