Утилизировать / закрыть ExchangeService в C #? - PullRequest
17 голосов
/ 09 февраля 2012

Я использую 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();
    // ...
}

Ответы [ 2 ]

21 голосов
/ 11 февраля 2012

В классе ExchangeService нет метода Close / Dispose, поскольку этот класс не поддерживает соединение с веб-службами.Вместо этого новое HTTP-соединение создается и закрывается при необходимости.

Например, когда вы вызываете ExchangeService.FindItems, новое HTTP-соединение с сервером Exchange создается и закрывается в рамках вызова метода на FindItems.

0 голосов
/ 15 мая 2015

Я понимаю, что это довольно старый вопрос, но у меня недавно был тот же вопрос, потому что у нас возникла проблема после подключения к почтовому ящику и повторной попытки этого же метода вскоре после этого мы получили исключение HTTP. Затем, подождав минуту или около того, мы можем подключиться ... но, как и комментарии к принятому ответу, это, вероятно, параметр на сервере Exchange.

Чтобы ответить на вопрос, технически говоря, поскольку ExchangeService не реализует IDisposable, тогда нет необходимости удалять соединение, и вы не можете заключить экземпляр в оператор using.

...