6

我在基于 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 表中添加了任何行。另外,我想问一下这是否是添加附加数据和默认会员数据的首选方式

4

3 回答 3

4

我通过在 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);

我终于在 aspnet_profile 表中看到了新注册用户的条目:)

于 2011-10-21T16:43:12.283 回答
1

1、需要创建profile类来定义profile结构

2,您需要在 web.config 中将您的配置文件设置配置为

3、现在你可以使用你的代码了。

您只需要在使用它之前执行前 2 个步骤。

参考:http ://weblogs.asp.net/jgalloway/archive/2008/01/19/writing-a-custom-asp-net-profile-class.aspx

于 2011-10-21T05:03:23.017 回答
1

在使用 ASP.NET 配置文件提供程序时,配置文件属性是自定义用户配置文件的方式。但是,您不必自己创建和保存配置文件实例 - 它由 ASp.NET 运行时自行完成。使用HttpContext.Current.Profile或使用其自身页面中的强类型动态Profile属性。通过稍后使用,您可以编写代码,例如

Profile.UserName = "User Name"; 

无需调用Save方法。有关详细信息,请参阅本文

在 Web 应用程序中,不能真正引用动态创建的 Profile 类,因此您必须使用HttpContext.Current.Profile(您当然可以将它分配给一个dynamic变量,以获得您所做的更具可读性的代码)。另一种方法是编写自己的类

于 2011-10-21T05:06:18.897 回答