Профиль Asp.net не сохраняет или отображает введенные данные (Код обновлен) 28.10.12

Профиль Asp.net либо не отображает, ни сохраняет данные, которые вводит пользователь, однако ошибок нет. Вот вид кода ниже: веб-проект просто работает, и ничего не отображается ни на имени, ни на имени, ни фамилии.


Это веб-проект,, я открыл проект с помощью открытого веб-сайта!
ОДНАКО проект отображает его как "WEBPROJECT.sln(3)" в строке заголовка программы VISUAL STUDIOS.

Это когда пользователь создает учетную запись и сохраняет настройки профиля пользователя: новые и обновленные

protected void CreateUserWizard_CreatedUser(object sender, EventArgs e)
{
    // Create an empty Profile for the newly created user
    ProfileCommon p = (ProfileCommon)ProfileCommon.Create(RegisterUser.UserName, true);

    // Save profile - must be done since we explicitly created it

    TextBox txtNewFirstName = (TextBox)RegisterUser.FindControl("txtNewFirstName");
    Profile.FirstName = txtNewFirstName.Text;


    TextBox txtNewLastName = (TextBox)RegisterUser.FindControl("txtNewLastName");
    Profile.LastName = txtNewLastName.Text;


    p.Save();
}

И это когда его отображается: НОВОЕ И ОБНОВЛЕНО

<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
            ProfileCommon p = this.Profile.GetProfile(this.User.Identity.Name);

            Label firstName = (Label)LoginView1.FindControl("firstName");
           Profile.FirstName = firstName.Text;


            Label lastName = (Label)LoginView1.FindControl("lastName");
           Profile.LastName = lastName.Text;


    } 
}

И это веб-конфиг: новый и обновленный

 <profile defaultProvider="AspNetSqlProfileProvider" enabled="true">
  <properties>
    <add name="FirstName" type="String" serializeAs="String"/>
    <add name="LastName" type="String" serializeAs="String"/>
    <add name="Gender" type="String" serializeAs="String"/>
    <add name="BirthDate" type="DateTime" serializeAs="String"/>
    <add name="Occupation" type="String" serializeAs="String"/>
    <add name="Website" type="String" serializeAs="String"/>
    <group name="Forum">
      <add name="Posts" type="Int32" defaultValue="0"/>
      <add name="AvatarUrl" type="String" serializeAs="String"/>
      <add name="Signature" type="String" serializeAs="String"/>
    </group>
    <group name="Address">
      <add name="Street" type="String" serializeAs="String"/>
      <add name="PostalCode" type="String" serializeAs="String"/>
      <add name="City" type="String" serializeAs="String"/>
      <add name="State" type="String" serializeAs="String"/>
      <add name="Country" type="String" serializeAs="String"/>
    </group>
    <group name="Contacts">
      <add name="Phone" type="String" serializeAs="String"/>
      <add name="Fax" type="String" serializeAs="String"/>
    </group>
  </properties>

  <providers>
 <clear/>
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
  </providers>
</profile>

Это то, что отображается в aspnet_Profile на моем сервере sql:
[PropertyNames]
[ЬазШате: С:0:0: Имя:S:0:0:]

Это повтор предыдущего кода, поэтому, пожалуйста, игнорируйте предыдущие комментарии ниже!

Я также попробовал метод PreRender:

<script runat="server">
protected void Page_PreRender(object sender, EventArgs e)
{
            ProfileCommon p = this.Profile.GetProfile(this.User.Identity.Name);

            Label firstName = (Label)LoginView1.FindControl("firstName");
           Profile.FirstName = firstName.Text;


            Label lastName = (Label)LoginView1.FindControl("lastName");
           Profile.LastName = lastName.Text;

}

Но я получаю ошибку: ссылка на объект не установлена ​​на экземпляр объекта. для Profile.FirstName = firstName.Text;

1 ответ

Решение

Упростите это, удалив все свойства из Web.Config, за исключением свойств имени и фамилии. Попробуйте сузить это.

Следующее работает для меня. Хотя для удобства я установил для anonymousIdentification значение true, я предоставил вам полный синтаксис для рабочей записи членства Web.Config:

<configuration>
  <connectionStrings>
    <remove name="LocalSqlServer"/>
    <add name="LocalSqlServer" 
        connectionString="Initial Catalog=Test;Data Source=MYPCNAME;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <system.web>
    <anonymousIdentification enabled="true"/>
    <profile>
      <properties>
        <add name="FirstName" type="System.String" allowAnonymous="true"/>
        <add name="LastName" type="System.String" allowAnonymous="true"/>
      </properties>
    </profile>
    <roleManager enabled="true"/>
    <authentication mode="Forms">
      <forms timeout="50000000"/>
    </authentication>
    <membership defaultProvider="SqlProvider">
      <providers>
        <clear/>
        <add name="SqlProvider" 
            type="System.Web.Security.SqlMembershipProvider"
            connectionStringName="LocalSqlServer" 
            enablePasswordReset="true" 
            requiresQuestionAndAnswer="false" 
            requiresUniqueEmail="false" 
            maxInvalidPasswordAttempts="5" 
            passwordAttemptWindow="10" 
            passwordFormat="Hashed" 
            minRequiredPasswordLength="7" 
            minRequiredNonAlphanumericCharacters="0" 
            passwordStrengthReqularExpression="0" 
            enablePasswordRetrieval="false" 
            applicationName="/"/>
      </providers>
    </membership>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>
</configuration>

    protected void Button1_Click(object sender, EventArgs e)
    {
        ProfileCommon p = (ProfileCommon)ProfileCommon.Create(fnTxt.Text 
            + lnTxt.Text, true);
        Profile.FirstName = fnTxt.Text;
        Profile.LastName = lnTxt.Text;

        p.Save();
    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        resultLabel.Text = Profile.FirstName + " " + Profile.LastName;
    }
Другие вопросы по тегам