'Autodiscover service couldn't be located' when trying to access Exchange 2010 account with EWS MANAGED API

匿名 (未验证) 提交于 2019-12-03 02:47:02

问题:

I am using Auto discover service Url for a specified e-mail address.

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()); 

If I do like this I'm gettin an error:

The Autodiscover service couldn't be located

What I have to do to avoid this error?

回答1:

You got Service.Credentials wrong, use it like this:

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

Using domain credentials, not the email address.

Also doublecheck the following:

  1. The version you specify in new ExchangeService() matches server's
  2. the parameter passed to Service.AutodiscoverUrl(); is correct (email address which data needs to be fetched)

The following works for me (in a new Console Application):

// 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 


回答2:

Let me point out that if you are trying to access Office 365 then the web credentials really are of the form WebCredentials(strUsername, strPassword); with strUsername being the email address of the account you are trying to access.

I was getting this error and it turned out someone had changed the password on the account without informing me! What an odd error to get when it's just a bad password!



回答3:

I will recommend you to enable Traces,to achieve this follow :

     Service.TraceEnabled = true; 

I was facing the same issue then when I enabled traces these traces will guide you what exactly is happening.In my case SSL certificate issue is there to solve it i followed following post

There can be many issue such as:

  • User can be blocked.
  • The DSN can't find autodiscover.domain.com


回答4:

try to use this:

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

NOT this one

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

notice the username is 'john' NOT 'john@mail.com',It blocked me for quite a few hours for using the second one....



回答5:

For the record of completeness:

We encountered a service suddenly stopping with this particular error. As the service had been running unattended for months, using EWS to monitor a mailbox, it turned out that the password was expired. This caused the AutoDiscovery to fail with the very same exception:

The Autodiscover service couldn't be located

Updating the Exchange user's password in the AD and checking its Password Never Expires property solved the problem for us.



回答6:

Check if the password for this email has experied.

If the password has expired you receive this error from Autodiscover.



回答7:

I'd recommend that you verify that autodiscover is actually setup in DNS. The following article explains how to set it up in more detail and it also gives you information on how to test it with the Microsoft Remote Connectivity Analyzer.http://www.petri.co.il/autodiscover-configuration-exchange-2010.htm



回答8:

I experienced the same problem with Exchange 2013. In my case the cause was a Default Proxy declaration in my config file, which probably prevented the Autodiscover service to work correctly.

<system.net>     <defaultProxy enabled="true">       <proxy proxyaddress="http://localhost:8888" bypassonlocal="False"/>     </defaultProxy> </system.net> 

After commenting the <defaultProxy> tag, autodiscover was able to find the service Url.



回答9:

I have hit this and a trace shows that after using the proxy to access 365 it starts a DNS lookup for an SVC record. This lookup goes to internal DNS and not the proxy, our internal DNS does not resolve external DNS entries, that is why we have proxy servers. Not yet found out why it is doing a DNS lookup rather than using the proxy servers, but that is what is causing our version of this problem



回答10:

I have used direct Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx") and it worked for me. You may try use Fiddler and eM Client to see how they use EWS Manged API to get things done and replicate calls.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!