1

当我尝试此代码时,它会给出此错误消息

不能为匿名用户设置此属性。

protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
    Roles.AddUserToRole((sender as CreateUserWizard).UserName, "Admin");

    Control ctrl = CreateUserWizard1.CreateUserStep.ContentTemplateContainer;
    TextBox txtAdminAddress= (TextBox)ctrl.FindControl("txtAdminAddress");
    TextBox txtAdminCountry= (TextBox)ctrl.FindControl("txtAdminCountry");
    TextBox txtAdminCity= (TextBox)ctrl.FindControl("txtAdminCity");

    HttpContext.Current.Profile.GetProfileGroup("AdminGroup").SetPropertyValue("AdminAddress", txtAdminAddress.Text);
    HttpContext.Current.Profile.GetProfileGroup("AdminGroup").SetPropertyValue("AdminCountry", txtAdminCountry.Text);
    HttpContext.Current.Profile.GetProfileGroup("AdminGroup").SetPropertyValue("AdminCity", txtAdminCity.Text);
    HttpContext.Current.Profile.Save();

}

配置:

<profile defaultProvider="AspNetSqlProfileProvider"> 
  <properties> 
    <group name="AdminGroup"> 
      <add name="AdminAddress" type="System.String"/> 
      <add name="AdminCountry" type="System.String"/> 
      <add name="AdminCity" type="System.String"/> 
    </group> 
  </properties> 
  <providers> 
     <clear/> 
     <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="MyConnectionString" applicationName="/"/> 
  </providers> 
</profile>
4

1 回答 1

1

创建用户后,您需要获取最近创建的用户的配置文件以开始更新值。由于未加载配置文件,因此不允许为匿名用户设置这些值。

string strUsername = (sender as CreateUserWizard).UserName;
ProfileCommon p = Profile.GetProfile(strUsername);

//update the field and save
p.AdminAddress= txtAdminAddress.Text;
p.Save();

ProfileBase对象(由Page.Profile属性提供)包括一个有用的GetProfile()函数,该函数按用户名检索特定用户的配置文件信息。

GetProfile()返回一个ProfileCommon对象。

[注意:配置文件中设置的配置文件属性不允许为匿名用户设置值。如果您想允许匿名用户使用此功能,请使用:

<add name="AdminAddress" type="System.String" allowAnonymous="true"/>

]

于 2013-07-23T08:52:32.823 回答