web-dev-qa-db-ja.com

EWS MANAGED APIを使用してExchange 2010アカウントにアクセスしようとすると、「自動検出サービスが見つかりませんでした」

指定した電子メールアドレスに自動検出サービスUrlを使用しています。

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

私がこれを好きなら、私はエラーになります:

自動検出サービスが見つかりませんでした

このエラーを回避するにはどうすればよいですか?

31
user1891567

_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
_
32
Alex

Office 365にアクセスしようとする場合、Web資格情報は実際にはWebCredentials(strUsername、strPassword);という形式であることに注意してください。 strUsernameは、アクセスしようとしているアカウントのメールアドレスです。

このエラーが発生していましたが、通知されずに誰かがアカウントのパスワードを変更したことがわかりました!パスワードが間違っている場合に取得する奇妙なエラー!

18
user3531993

これを実現するために、トレースを有効にすることをお勧めします。

     Service.TraceEnabled = true;

私は同じ問題に直面していましたが、トレースを有効にしたとき、これらのトレースは正確に何が起こっているかをガイドします。私の場合、SSL証明書の問題はそれを解決するためにあります post

次のような多くの問題が発生する可能性があります。

  • ユーザーをブロックできます。
  • DNSはautodiscover.domain.comを見つけることができません。
12
nitesh.kodle123

完全性の記録:

この特定のエラーでサービスが突然停止しました。 EWSを使用してメールボックスを監視するサービスが何ヶ月も無人で実行されていたため、パスワードの有効期限が切れていることが判明しました。これにより、AutoDiscoveryはまったく同じ例外で失敗しました。

自動検出サービスが見つかりませんでした

ADでExchangeユーザーのパスワードを更新し、そのPassword Never Expiresプロパティが問題を解決しました。

8
Gigabyte

このメールのパスワードの有効期限が切れているかどうかを確認してください。

パスワードの有効期限が切れている場合、AutoDiscoverからこのエラーを受け取ります。

7
Carlos ABS

これを使用してみてください:

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

これじゃない

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

ユーザー名は'john' NOT '[email protected]'、2番目のものを使用するためにかなりの時間ブロックされました。..

7
cenday

直接Url = new Uri("https://Outlook.office365.com/EWS/Exchange.asmx")を使用しましたが、うまくいきました。 Fiddler および eM Client を使用して、_EWS Manged API処理を完了させ、呼び出しを複製します。

3
Dzmitry Lahoda

DNSで自動検出が実際にセットアップされていることを確認することをお勧めします。次の記事では、設定方法を詳細に説明し、Microsoft Remote Connectivity Analyzerでテストする方法についても説明します。 http://www.petri.co.il/autodiscover-configuration- exchange-2010.htm

3
cmchenry

特定のユーザーに対してこの問題に直面しました。チェックした後、ユーザーが2要素認証を有効にし、接続にプライマリパスワードを使用していることがわかりました。アプリ固有のパスワードを生成して接続することで解決しました。 2つの要素を無効にすることもできましたが、反映するには時間がかかります。 Exchangeが「自動検出サービスを見つけることができませんでした」という理由がわからない。 「無許可」の代わりに。

0
Priyank Kotiyal

Exchange 2013でも同じ問題が発生しました。私の場合、原因は構成ファイル内のデフォルトプロキシ宣言であり、自動検出サービスが正しく動作しなかった可能性があります。

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

<defaultProxy>タグにコメントを付けた後、自動検出はサービスUrlを見つけることができました。

0
Vasile Tomoiaga

私はこれを見つけました、そして、トレースは365にアクセスするためにプロキシを使用した後、それがSVCレコードのDNSルックアップを開始することを示します。このルックアップはプロキシではなく内部DNSに送られます。内部DNSは外部DNSエントリを解決しないため、プロキシサーバーがあります。プロキシサーバーを使用するのではなくDNSルックアップを実行している理由はまだわかりませんが、それがこの問題のバージョンの原因です

0
Chris Lee