我在基于MVC2框架的项目中使用了带有OpenId实现的Membership API.
除了用户名之外,我还需要在注册时将一些其他字段与用户相关联.
除了用户名之外,我还需要在注册时将一些其他字段与用户相关联.
我不确定但是我认为asp.net中的Profile系统是为这种类型的要求而构建的.另外,我看到一个包含名为’aspnet_profile’的其他成员资格表的表.
我在应用程序web.config中添加了以下设置以启用配置文件:
<profile enabled="true"> <properties> <add name="FullName" allowAnonymous="false"/> </properties> </profile>
如前所述,应用程序需要一些额外的数据与用户相关联,因此在使用Membership API创建用户时,我添加了几行代码以进入配置文件表
System.Web.Security.MembershipCreateStatus status = MembershipService.createuser(usermodel.UserName,usermodel.Password,usermodel.UserName); if (status == System.Web.Security.MembershipCreateStatus.Success) { FormsService.SignIn(usermodel.UserName,true); Session["Username"] = usermodel.UserName; dynamic profile = ProfileBase.Create(MembershipService.GetUser(usermodel.UserName).UserName); profile.FullName = usermodel.UserFullName; profile.Save(); RedirectToAction("Tech","Home"); }
但我没有看到数据库中的aspnet_profile表中添加了任何行.另外,我想询问这是否是添加其他数据以及默认成员资格数据的首选方式
解决方法
我通过在web.config中进行与默认配置文件提供程序名称相关的一些更改来使其工作:
<profile enabled="true" defaultProvider="AspNetsqlProfileProvider"> <providers> <clear/> <add name="AspNetsqlProfileProvider" applicationName="/" connectionStringName="applicationservices" type="System.Web.Profile.sqlProfileProvider" /> </providers> <properties> <add name="FullName" allowAnonymous="false"/> </properties> </profile>
另外,我在调用ProfileBase.Create函数和设置Profile.FullName之间再添加一行;
profile.Initialize(usermodel.userName,true);