在C#中配置/关闭ExchangeService?

时间:2012-02-09 11:17:21

标签: c# dispose exchangewebservices exchange-server-2007

我正在使用ExchangeService WebService API(Microsoft.Exchange.WebServices.Data),但我找不到任何CloseDispose方法。

以某种方式关闭连接是否不是必要的?

我的方法如下:

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();
    // ...
}

3 个答案:

答案 0 :(得分:20)

ExchangeService类上没有Close / Dispose方法,因为该类没有维护与Web服务的连接。而是根据需要创建并关闭新的HTTP连接。

例如,当您致电ExchangeService.FindItems时,会创建一个与Exchange服务器的新HTTP连接,并在对FindItems的方法调用中关闭。

答案 1 :(得分:0)

我意识到这已经很老了,但最近我遇到了同样的问题,因为我们在连接到邮箱后遇到了问题,并且很快再次尝试相同的方法,我们得到了一个HTTP异常。然后,在等待一分钟左右后,我们可以连接...但是就像对接受的答案的评论一样,这可能是Exchange服务器上的一个设置。

要回答这个问题,从技术上讲,由于ExchangeService没有实现IDisposable,因此不需要Dispose连接,也不能在using语句中包装实例。

答案 2 :(得分:0)

int r0, r1,sup2;

cout << "input number one : ";
cin >> r0;

cout << "input number two: ";
cin >> r1;

if (r1 > r0) {

    r1 = r1 + r0;
    r0 = r1 - r0;
    r1 = r1 - r0;
}

while (r1 != 0)
{
    sup2 = r0 % r1;
    r0 = r1;
    r1 = sup2;
}

cout << "\n\nGCD = " << r0 <<endl ;