我正在开发一个带有ActiveDirectoryMembershipProvider和SqlProfileProvider的asp.net Intranet网站。
我的网站的一个要求是有一个“生日”页面,这需要我列出所有个人资料并从中检索生日信息。
我解决了以下问题:
然而,由于以下原因,这种方法失败了:
那么,您如何解决此问题以检索组织中任何成员的完整配置文件列表?
答案 0 :(得分:2)
虽然我之前从未这样做过,但您可以尝试创建辅助模拟上下文,在建立后,对GetAllUsers
的调用应该会成功。
看一下http://chiragrdarji.blogspot.com/2007/03/impersonation-using-code.html,通过使用System.Security.Principal.WindowsIdentity
类和System.Security.Principal.WindowsImpersonationContext
,这个章节似乎已经实现了安全上下文的更改。可能值得一试。
答案 1 :(得分:2)
有一个带有方法GetAllProfiles()的ProfileManager:
http://msdn.microsoft.com/en-us/library/system.web.profile.profilemanager.getallprofiles.aspx
答案 2 :(得分:1)
ProfileInfoCollection profiles = ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
foreach (ProfileInfo pi in profiles)
{
ProfileCommon p = Profile.GetProfile(pi.UserName);
countries.Add(p.Country);
}