Windows服务C#:访问邮件。无法找到自动发现服务

时间:2013-02-19 13:02:39

标签: c# email exchange-server exchangewebservices

我已尝试过以下两种方法,但都返回结果"无法找到自动发现服务。"

http://msdn.microsoft.com/en-us/library/gg591267(v=EXCHG.140).aspx

service.Credentials = new NetworkCredential(userData.EmailAddress, userData.Password);

  if (userData.AutodiscoverUrl == null)
  {
    service.AutodiscoverUrl(userData.EmailAddress, RedirectionUrlValidationCallback);
    userData.AutodiscoverUrl = service.Url;
  }
  else
  {
    service.Url = userData.AutodiscoverUrl;
  }

  return service;
}

http://code.msdn.microsoft.com/Exchange-2013-Set-pull-14c8360b#content

static ExchangeService GetBinding()
        {
            // Create the binding.
            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1);

        // Define credentials.
        service.Credentials = new WebCredentials("myemail@work.com", "password");

        // Use the AutodiscoverUrl method to locate the service endpoint.
        try
        {
            service.AutodiscoverUrl("myemail@work.com", RedirectionUrlValidationCallback);
        }
        catch (AutodiscoverRemoteException ex)
        {
            Console.WriteLine("Exception thrown: " + ex.Error.Message);
        }

        // Display the service URL.
        Console.WriteLine("AutodiscoverURL: " + service.Url);
        return service;
    }

在一个实例中,我输入了我的电子邮件和密码,另一个是硬编码的。在尝试自动发现时,两者都会挂起,并最终失败并显示消息"无法找到自动发现服务。"我根据教程添加了引用,并且在Microsoft.Exchange.WebServices.dll下显示了自动发现...还有其他我缺少的东西吗?

2 个答案:

答案 0 :(得分:0)

尝试添加:

service.UseDefaultCredentials = false;
设置凭据后

答案 1 :(得分:0)

我不知道你是否已经解决了这个问题,因为我在寻找相同(或类似?)问题的解决方案时,我碰到了你的帖子。

奇怪的是: 由于它在调试模式下完美运行,但没有安装为Windows服务,我更改了Windows服务属性中的“登录”设置(services.msc,右键单击已安装的服务,属性,登录选项卡)并将其设置为“本地系统帐户”并选中“允许服务与桌面交互”选项。

这对我有用。