ActiveDirectoryMembershipProviderとSqlProfileProviderを使用してasp.netイントラネットWebサイトを開発しています。
私のウェブサイトの要件の1つは、「誕生日」ページを用意することです。このページでは、すべてのプロファイルを一覧表示し、そこから誕生日情報を取得する必要があります。
私は次のように問題に取り組みました:
- Membership.GetAllUsers()静的メソッドを呼び出します。
- ユーザーのリストを繰り返し処理し、メンバーのユーザー名からプロファイルを取得します
ただし、このアプローチは次の理由で失敗しました。
- Webアプリケーションは現在ログに記録されているユーザーになりすましてADの詳細を取得しているため(web.configのID impersonate = "true")、GetAllUsersを呼び出そうとすると「アクセスが拒否されました」という例外が発生します
- Webアプリにスーパーユーザーアカウントを偽装させようとすると、ADはユーザー名をusername @ domain-name形式で返しますが、私のプロファイルプロバイダーでは、最初はdomain-name\username形式で保存されていました。
では、この問題を回避して、組織のメンバーのプロファイルの全リストを取得するにはどうすればよいでしょうか。