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ます。

[ 注: Config ファイルで設定されたプロファイル プロパティでは、匿名ユーザーの値を設定できません。匿名ユーザーにこれを許可する場合は、次も使用します。

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

]

于 2013-07-23T08:52:32.823 に答える