Csharp/C#教程:尝试使用EWS MANAGED API访问Exchange 2010帐户时,无法找到“自动发现服务”分享


尝试使用EWS MANAGED API访问Exchange 2010帐户时,无法找到“自动发现服务”

我正在使用自动发现服务Url来获取指定的电子邮件地址。

ExchangeService Service = new ExchangeService(ExchangeVersion.Exchange2010); Service.Credentials = new WebCredentials("username@domainname.com", "Password"); Service.AutodiscoverUrl("username@domainname.com"); Folder inbox = Folder.Bind(Service, WellKnownFolderName.Inbox); Console.WriteLine("The folder name is" + inbox.DisplayName.ToString()); 

如果我喜欢这个,我会得到一个错误:

无法找到自动发现服务

我该怎么做才能避免这个错误?

你有Service.Credentials错误,使用它像这样:

 Service.Credentials = new WebCredentials(username, password, domainname); 

使用域凭据,而不是电子邮件地址。

还要仔细检查以下内容:

  1. 您在new ExchangeService()中指定的版本与服务器的版本匹配
  2. 传递给Service.AutodiscoverUrl();的参数Service.AutodiscoverUrl(); 是正确的(需要提取数据的电子邮件地址)

以下适用于我(在新的控制台应用程序中):

 // Tweaked to match server version ExchangeService Service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); // Dummy but realistic credentials provided below Service.Credentials = new WebCredentials("john", "12345678", "MYDOMAIN"); Service.AutodiscoverUrl("john.smith@mydomain.it"); Folder inbox = Folder.Bind(Service, WellKnownFolderName.Inbox); Console.WriteLine("The folder name is " + inbox.DisplayName.ToString()); //Console output follows (IT localized environment, 'Posta in arrivo' = 'Inbox') > The folder name is Posta in arrivo 

我要指出,如果您尝试访问Office 365,那么Web凭据的格式实际上是WebCredentials(strUsername,strPassword); strUsername是您尝试访问的帐户的电子邮件地址。

我收到此错误,结果发现有人在没有通知我的情况下更改了帐户上的密码! 这只是一个错误的密码,这是多么奇怪的错误!

我建议你启用Traces,以实现以下目的:

  Service.TraceEnabled = true; 

当我启用跟踪时,我遇到了同样的问题,这些跟踪将指导您到底发生了什么。在我的情况下SSL证书问题是解决它我跟随后发布

可能有很多问题,例如:

为了完整性的记录:

我们遇到了这个特殊错误突然停止的服务。 由于该服务已无人值守运行数月,使用EWS监控邮箱,因此certificate密码已过期。 这导致AutoDiscovery失败并出现同样的exception:

无法找到自动发现服务

更新AD中的Exchange用户密码并检查其Password Never Expires属性为我们解决了问题。

试着用这个:

 Service.Credentials = new WebCredentials("john", "12345678", "MYDOMAIN"); 

不是这个

 Service.Credentials = new WebCredentials("john@mail.com", "12345678", "MYDOMAIN"); 

注意用户名是'john' 'john@mail.com' ,它阻止了我使用第二个的几个小时….

检查此电子邮件的密码是否已经过validation。

如果密码已过期,则会从自动发现中收到此错误。

我建议您validation是否在DNS中实际设置了自动发现。 下面的文章将详细介绍如何进行设置,并为您提供有关如何使用Microsoft远程连接分析器进行测试的信息。 https://www.petri.co.il/autodiscover-configuration-exchange-2010.htm

我在Exchange 2013中遇到了同样的问题。在我的情况下,原因是我的配置文件中的默认代理声明,这可能会阻止自动发现服务正常工作。

      

在评论标记后,自动发现能够找到服务Url。

我已经点击了这一点,并且跟踪显示在使用代理访问365之后,它启动了对SVC记录的DNS查找。 此查找发送到内部DNS而不是代理,我们的内部DNS不解析外部DNS条目,这就是我们拥有代理服务器的原因。 尚未发现为什么它正在进行DNS查找而不是使用代理服务器,但这就是造成我们此版本问题的原因

我使用了直接Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx") ,它对我有用。 您可以尝试使用Fiddler和eM Client来了解他们如何使用EWS Manged API完成工作并复制调用。

上述就是C#学习教程:尝试使用EWS MANAGED API访问Exchange 2010帐户时,无法找到“自动发现服务”分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1022966.html

(0)
上一篇 2022年1月7日
下一篇 2022年1月7日

精彩推荐