Утилизировать/закрыть 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.