8

これが私のシナリオです。Exchange 2010 SP2 アカウントからの電子メールを読まなければなりません。Exchange Web サービスを使用する必要があり、POP3 と IMAP がブロックされています。ユーザーがイントラネットの Web ブラウザーからのみ自分のアカウントにアクセスできる環境でアプリをテストする必要があります。アプリをこのイントラネットに直接デバッグすることはできません。アカウントにアクセスするためのこのスニペットがあります。

private void Dowork()
{
    ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);

    string dominio = "domain";
    string usuario = "user";
    string password = "password";

    service.Credentials = new NetworkCredential(usuario, password, dominio);

    string url = usuario + "@" + dominio + ".com";

    service.AutodiscoverUrl(url, RedirectionUrlValidationCallback);
    //service.AutodiscoverUrl(url);

    FindItemsResults<Item> findResults = service.FindItems(
       WellKnownFolderName.Inbox,
       new ItemView(10));

    string content = string.Empty;

    foreach (Item item in findResults.Items)
    {
        EmailMessage email = EmailMessage.Bind(service, item.Id);
        email.Load();

        content += item.Subject + "\n";
        content += email.From.Address + "\n";
        content += email.Body + "\n\n";

        //Console.WriteLine(item.Subject);
        //Console.WriteLine(email.From.Address);
        //Console.WriteLine(email.Body);
    }

    string result = content;
}

// Create the callback to validate the redirection URL.
static bool RedirectionUrlValidationCallback(String redirectionUrl)
{
    // Perform validation.
    return (redirectionUrl == "https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml");
}

この行を使用する場合:

service.AutodiscoverUrl(url);

次のエラーが表示されます。

「自動検出は、https: //autodiscover.colpatria.com/autodiscover/autodiscover.xml への安全でない可能性のあるリダイレクトをブロックしました。自動検出がリダイレクトを追跡できるようにするには、AutodiscoverUrl(string, AutodiscoverRedirectionUrlValidationCallback) オーバーロードを使用してください。」

メソッドRedirectionUrlValidationCallbackが実装されたので、URLが正しいかどうかわかりません。実際には、このエラーが発生しています:

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

自動検出が正しく構成されていない可能性はありますか?? 私は取引所の管理者ではありませんが、自動検出が機能しているかどうかを確認するにはどうすればよいですか?? この機能を構成する必要があることを取引所管理者に伝える引数が必要です。助けてくれてありがとう。

4

6 に答える 6

4

これは、報告されたエラーの完全な解決策の例を入れたいと思った古い投稿です。service.AutodiscoverUrl("someuser@somedomain.org");を置き換えるだけです。 with System.Uri(" https://mail.somedomain.org/ews/Exchange.asmx ");

これがコードの完全なブロックです

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
                service.Credentials = new WebCredentials("someuser", "somepassword");
                //service.AutodiscoverUrl("someuser@somedomain.org");
                service.Url = new System.Uri("https://mail.somedomain.org/ews/Exchange.asmx");
于 2016-02-01T16:45:11.513 に答える
2

最近同様の問題に遭遇し、それらを解決するために取り組んでいるときに、トラブルシューティングに非常に役立つ/役立つユーティリティを発見しました: EWS エディター問題を解決しない場合がありますが、さまざまな構成の組み合わせを非常に迅速に反復するために使用でき、うまくいけばいくつかの光を当てることができますあなたの問題について。

クライアントと連携して自動検出とサービス URL 接続を確立し、Exchange サーバーをテストおよび運用するときに、このアプリを使用しました。私だけでなく、クライアントの IT スタッフにとっても便利でした。彼らはユーティリティをダウンロードして使用し、設定をテストおよび検証しました。

http://ewseditor.codeplex.comから:

プロジェクトの説明

EWSEditor には 3 つの目標があります。

  1. ソース コードを通じて、Exchange Web サービス マネージ API の機能とシンプルさを開発者に示します。

  2. エクスプローラーのユーザー インターフェイスから開始されたアクションを実行するために使用される Exchange Web サービスの SOAP トラフィックを示します。

  3. アイテム、フォルダー、およびそれらのプロパティを詳細に調査することにより、非開発者が Exchange ストアをデバッグおよび理解するのを支援します。

于 2013-06-14T17:05:03.727 に答える
2

どういうわけか、結果をログに記録する必要がありますredirectionUrlredirectionUrl指定した URI と が一致しない場合 (つまり、自動検出検証コールバックが を返すFALSE場合)、このエラーが発生します。確かに、redirectionUrlURI はあなたが思っているものではありません。SSL を使用している場合は、リダイレクト検証コールバックを処理する必要があります。

アプリケーションをデバッグすることはできないため、おそらく自分自身に電子メールを送信したり、共有 DB またはファイルにログを記録したり、アプリ イベント ログを使用したりできます (アプリケーション例外をスローします)。

注:最初のエラーは、自動検出 URI が であることを示していますhttps://autodiscover.colpatria.com/autodiscover/autodiscover.xml。これは既存の文字列を置き換える必要がありますhttps://autodiscover-s.outlook.com/autodiscover/autodiscover.xmlか?

また、MSDN のExchange AutodiscoveryおよびValidating a Potentially Unsafe Redirection URLに関する関連 SO 投稿も参照してください。

于 2012-07-18T18:41:42.347 に答える
0

試すservice.TraceEnabled = true;

WFM。私の場合、Exchange Server からの証明書をクライアント マシンにインストールして、SSL/TLS をセットアップする必要がありました。トレースの出力からこの解決策に導かれました。

于 2016-02-24T23:46:26.440 に答える