我正在转换在经典 ASP.Net Membership Provider 中序列化的用户配置文件数据,以便在 SimpleMembership 中使用。我无法弄清楚如何为ProfileBase
系统中的每个用户获取对象。
如果特定用户已登录,我可以执行以下操作:
MyModel myModel =
(MyModel)HttpContext.Current.Profile.GetPropertyValue("MyKey");
其中MyKey指的是这样建立的配置文件密钥web.config
:
<add name="MyModel" type="MyNS.MyModel" serializeAs="Binary" />
但是,如果没有 HTTP 上下文的好处(我试图为系统中的所有用户执行此操作,而不是登录用户),我无法弄清楚如何加载配置文件并最终MyModel
为每个用户加载一个实例在系统中。
我试过了:
ProfileInfoCollection profiles =
ProfileManager.GetAllProfiles(ProfileAuthenticationOption.All);
foreach (var profile in profiles)
{
var pi = (ProfileBase)profile;
// OOPS! Unfortunately GetAllProfiles returns
// ProfileInfo and not ProfileCommon or ProfileBase
}
和
MembershipUserCollection existingUsers = Membership.GetAllUsers();
foreach (MembershipUser mu in existingUsers)
{
mu. // OOPS! No link to the profile from the user...
}
如何检索系统中每个配置文件的ProfileCommon
或ProfileBase
实例,从而最终MyModel
与每个用户关联?