4

ASP.NET 経由で Exchange Web サービスに接続しようとすると、エラーが発生します。

次のコードは、コンソール アプリケーションを介して呼び出すと機能しますが、ASP.NET Web フォーム ページで実行するとまったく同じコードが失敗します。補足として、このコード サンプル全体で自分の資格情報を使用しています。

「メールボックスを持たないアカウントとして要求を行う場合、識別フォルダー ID のメールボックスのプライマリ SMTP アドレスを指定する必要があります。」

なりすましユーザーを指定することで問題を解決できるのではないかと考えました。

exchangeservice.ImpersonatedUserId = 
    new ImpersonatedUserId(ConnectingIdType.SmtpAddress, "email@domain.com");

しかし、その後、別のエラーが発生します。

「このアカウントには、要求されたユーザーを偽装する権限がありません。」

Web アプリケーションが実行されているアプリケーション プールも私自身のアカウント (コンソール アプリケーションと同じ) であるため、この問題の原因がわかりません。

.NET フレームワーク 3.5 を使用しています。

ここにコード全体があります。

var exchangeservice =
                        new ExchangeService(ExchangeVersion.Exchange2010_SP1)
                        {
                            Timeout = 10000
                        };

 var credentials = new System.Net.NetworkCredential("username", "pass", "domain");


exchangeservice.AutodiscoverUrl("email@domain.com")

FolderId rootFolderId = new FolderId(WellKnownFolderName.Inbox);

var folderView = new FolderView(100)
            {
                Traversal = FolderTraversal.Shallow
            };

            FindFoldersResults findFoldersResults =
                service.FindFolders(rootFolderId, folderView);
4

2 に答える 2

1

資格情報を確認し、ユーザーが偽装するのに十分なアクセス許可を持っているかどうかを確認します。EWS 調整ポリシーを確認し、適切なアクセス許可を提供すると、問題が解決します。

于 2012-12-12T17:02:08.343 に答える
1

サービスに対して資格情報を直接設定しようとしましたか?

this.exchangeService.Credentials = new WebCredentials("username", "pass");

this.exchangeService.AutodiscoverUrl("username", this.RedirectionUrlValidationCallback);

これを検証コールバックとして使用します..

    /// <summary>
    /// Redirections the URL validation callback.
    /// </summary>
    /// <param name="redirectionUrl">The redirection URL.</param>
    /// <returns>true if https</returns>
    private bool RedirectionUrlValidationCallback(string redirectionUrl)
    {
        // The default for the validation callback is to reject the URL.
        var result = false;

        var redirectionUri = new Uri(redirectionUrl);

        // Validate the contents of the redirection URL. In this simple validation
        // callback, the redirection URL is considered valid if it is using HTTPS
        // to encrypt the authentication credentials. 
        if (redirectionUri.Scheme == "https")
        {
            result = true;
        }

        return result;
    }
于 2012-12-10T10:44:17.710 に答える