0

次のコードを使用して Active Directory でユーザーの詳細を検索する asp.net Web サイトがあります。

public static SearchResult GetUserProfileFromAD(string username)
{
    DirectorySearcher searcher = new DirectorySearcher("(&(objectCategory=person)(sAMAccountName=" + username + "))");
    return searcher.FindOne();
}

この Web サイトは、Windows Server 2003 および IIS5 でうまく機能しています。最近、IIS7.5 を搭載した新しい Windows Server 2008 に Web サイトを移動し、アプリケーションを iis に追加して Web サイトを接続すると、次のエラーが発生します。

(&(objectCategory=person)(sAMAccountName=))検索フィルターが無効です。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.ArgumentException: (&(objectCategory=person)(sAMAccountName=)) 検索フィルターが無効です。

Visual Studio を使用して Web サイトを実行すると、機能します。問題は IIS のみです。

誰かが私を助けることができますか?

4

3 に答える 3

1

「username」変数が空白であるため、フィルターは等号で終了します(実際には無効です)。セットアップについて詳しく知らなければ、言うのは難しいです。ただし、新しいサーバーでWebサイトの認証が正しく設定されていないように聞こえます。これにより、ユーザー名を入力する必要のあるルーチンが何も戻らないようになります。

于 2013-02-28T14:00:15.787 に答える
1

「username」が空の文字列であるため、エラーは明らかに発生します。これは、ユーザーが匿名でWebサイトにログインしていることが原因である可能性があります。IISで匿名アクセスが無効になっていることを確認してください。

ただし、を呼び出すコードを表示できると便利ですGetUserProfileFromAD

于 2013-02-28T14:00:25.130 に答える
0

変数usernameが入力されていないようです。IISに移動したと言った場合、セキュリティオプションをもう一度確認してみてください。おそらく、Windows認証がまだ構成されていません。

于 2013-02-28T14:01:15.823 に答える