-1

あるサーバーから別のサーバーにいくつかの c# v4 アプリを移行する任務を負っていますが、aspx フォームの 1 つで問題が発生しました。

フォームには、コード ビハインド ファイルで AD ユーザーを検索するためのクラスへの呼び出しがあります。それが呼び出すメソッドは以下です。

    public UserPrincipal GetADUser(string samAccountName)
        {
        try
        {
            UserPrincipal user = UserPrincipal.FindByIdentity(AD.domainContext, samAccountName);
            return user;
        }
        catch(Exception ex)
        {
            throw new Exception(" Cant perform this operation:-"+ex.Message);
        }
    }

AD.domainContext は以下で定義されています

private static PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, ConfigurationHandler._ADDomain);

私の問題は、メソッドが 2 つのサーバー (VS Dev と現在移行元のコードを実行しているサーバー) で機能し、移行しようとしているサーバーで例外をスローすることです。すべてのサーバーは同一の環境であり、iis 7.5 を実行する Windows Server 2k8 R2

スローされているエラーは

この操作を実行できません:-操作エラーが発生しました。

私は検索を行い、次のstackoverflowの問題を見つけましたが、問題を解決しているようには見えません

System.DirectoryServices.AccountManagement.PrincipalContext と WCF サービスでの偽装

Active Directory COM 例外 - 操作エラーが発生しました (0x80072020)

このエラーが1つの環境でスローされ、他の環境ではスローされない原因を知っている人はいますか?

コードをデバッグしようとしましたが、VS デバッグでは問題なく動作しますが、コードが上記のサーバーにデプロイされたときに問題が発生します。

どんな助け、考え、アイデアも大歓迎です。

何かを含めるのを忘れた場合は、提供された情報について詳しく説明させていただきます.

前もって感謝します

ニコラス

4

1 に答える 1

1

同様の問題に直面している他の人にとって、解決策は、IISでユーザーの偽装がオンになっていない限り、ユーザー名とパスワードをクエリADに提供する必要があるようです。

私の方法を次のように修正するだけで問題が解決しました

private static PrincipalContext domainContext = new PrincipalContext(ContextType.Domain, null,ConfigurationHandler._ADDomain, ConfigurationHandler._ADUser, ConfigurationHandler._ADPassword);

ありがとう

ニコラス

于 2012-06-28T16:05:04.040 に答える