2013-02-25 54 views
22

我正在使用自動發現服務Url獲取指定的電子郵件地址。嘗試使用EWS MANAGED API訪問Exchange 2010帳戶時無法找到「自動發現服務」

ExchangeService Service = new ExchangeService(ExchangeVersion.Exchange2010); 
Service.Credentials = new WebCredentials("[email protected]", "Password"); 
Service.AutodiscoverUrl("[email protected]"); 
Folder inbox = Folder.Bind(Service, WellKnownFolderName.Inbox); 
Console.WriteLine("The folder name is" + inbox.DisplayName.ToString()); 

如果我不喜歡這個,我剛開了一個錯誤:

The Autodiscover service couldn't be located

我不得不做,以避免這個錯誤?

回答

27

你有Service.Credentials錯了,像這樣使用:

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

使用域憑據,而不是電子郵件地址。

而且雙檢如下:

  1. (該數據需要獲取電子郵件地址)你在new ExchangeService()比賽指定服務器的
  2. 傳遞給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("[email protected]"); 
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 
+0

感謝您的答覆Alex.I嘗試,因爲你告訴above.But相同的錯誤談到。 – user1891567 2013-02-25 11:38:21

+0

我不知道該說些什麼,我在一個新的控制檯應用程序中複製粘貼了你的代碼,並且在匹配服務器的版本(我們的是2007SP1)和更改憑證之後就可以工作,正如我上面指出的那樣。服務器的版本差異可能是相關的,但我無法驗證它。 – Alex 2013-02-25 11:41:41

+0

我嘗試將版本更改爲Exchange2007_SP1,Exchange2010,Exchange2010_SP1,Exchange2010_SP2 ... Thento也出現同樣的錯誤。 – user1891567 2013-02-25 11:58:42

6

嘗試使用此:

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

沒有這一項

Service.Credentials = new WebCredentials("[email protected]", "12345678", "MYDOMAIN"); 

通知的用戶名是'john''[email protected]',它阻止我了好幾個小時,使用第二個.. ..

7

我會推薦你​​啓用Traces,以達到以下效果:

 Service.TraceEnabled = true; 

我面臨着同樣的問題,那麼,當我啓用的跟蹤這些痕跡會引導你到底是什麼happening.In我的情況下,SSL證書的問題是有解決這個問題我也跟着下面post

可以有很多問題如:

  • 用戶可以被阻止。
  • 的DSN找不到autodiscover.domain.com
+0

謝謝。這幫助我指出了我的情況。 DNS無法解析服務器上的autodiscover.domain.com,而這在我的本地機器上工作。在hosts文件中添加一個條目,將autodiscover.domain.com指向正確的IP地址,並且所有內容都按預期工作。 – user2260040 2015-03-25 20:39:21

+1

要配置跟蹤輸出的位置,請按照此處的說明https://msdn.microsoft.com/en-us/library/office/dd633676(v=exchg.80).aspx – 2017-09-09 23:50:40

0

我經歷了同樣的問題與Exchange 2013在我的情況的原因是在我的配置文件中的默認代理聲明,這可能阻止自動發現服務正常工作。

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

評論的<defaultProxy>標籤後,自動發現能夠找到服務網址。

13

讓我指出,如果您嘗試訪問Office 365,那麼Web憑證確實是WebCredentials(strUsername,strPassword)形式; strUsername是您嘗試訪問的帳戶的電子郵件地址。

我得到這個錯誤,事實證明有人在沒有通知我的情況下更改了賬戶的密碼!當它只是一個錯誤的密碼時,得到一個奇怪的錯誤!

+0

謝謝@ user3531993測試它的工作原理。以防萬一其他人閱讀MSDN文檔 - 微軟給出了選項,strUsername不是電子郵件,而是用戶名,這使我感到困惑,因爲它在這裏不起作用鏈接https://msdn.microsoft.com/en-us/library /dn467891(v=exchg.150).aspx – Dung 2016-05-14 14:23:04

+0

感謝您指出此錯誤也可能發生在不正確的憑據上。爲我節省了很多時間! – confusedandamused 2016-10-06 14:30:41

6

爲了完整記錄:

我們遇到了一個服務突然此特定錯誤停止。 由於該服務已經無人照管數月,使用EWS監控郵箱,結果證明密碼已過期。這引起了自動發現失敗,出現同樣的異常:

The Autodiscover service couldn't be located

在AD更新Exchange用戶的密碼,並檢查其Password Never Expires產權問題解決了我們。

+1

寫得很好,完整。我的也過期了。 – wruckie 2015-11-09 19:38:16

3

檢查此電子郵件的密碼是否有效。

如果密碼已過期,您從Autodiscover收到此錯誤。

+1

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – 2015-03-24 00:42:19

+0

其實@StephenMuecke這個答案很有幫助 - 原來是我的問題! – kaveman 2015-08-17 17:58:47

0

我已經打了這個,並且一個跟蹤顯示,在使用代理訪問365之後,它啓動了SVC記錄的DNS查找。 這種查找內部DNS而不是代理,我們的內部DNS不能解析外部DNS條目,這就是我們有代理服務器的原因。 還沒有找到爲什麼它正在做一個DNS查詢,而不是使用代理服務器,但這是什麼導致我們的版本的這個問題

相關問題