ASP. NET Профиль не сохраняет данные - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь использовать профиль ASP. NET для сохранения пользовательских данных со значением по умолчанию machine.config (. Net Framework 4.5.2) в файле web.config. Добавлен только сайт.

    <system.web>
      <profile>
        <properties>
          <add name="AddressInfo" type="UserAddress" serializeAs="Binary"/>
        </properties>
      </profile>
    </system.web>

Я протестировал его с помощью простого кода (на странице 3 TextBox и Button)

public partial class _Default : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
    GetUserAddress();
  }
  protected void btnSubmit_Click(object sender, EventArgs e)
  {
    // Database writes happening here!
    Profile.AddressInfo.City = txtCity.Text;
    Profile.AddressInfo.Street = txtStreetAddress.Text;
    Profile.AddressInfo.State = txtState.Text;

    // Get settings from database.
    GetUserAddress();
  }

  private void GetUserAddress()
  {
    // Database reads happening here!
    lblUserData.Text = String.Format("You live here: {0}, {1}, {2}",
      Profile.AddressInfo.Street, Profile.AddressInfo.City,
      Profile.AddressInfo.State);
  }
}
[Serializable]
public class UserAddress
{
  public string Street = string.Empty;
  public string City = string.Empty;
  public string State = string.Empty;
}

Приложение запущено, "OnClick" без ошибок выполняет методы (btnSubmit_Click(...) и GetUserAddress()) и обновляет значение lblUserData Label, но ничего не пишет в БД (также не создавал саму БД - ASPNETDB.mdf в папке App_Data Site's). После повторного открытия страницы соответствующих свойств профиля и lblUserData Метка была пуста.

1 Ответ

0 голосов
/ 27 февраля 2020

Я обнаружил root проблемы. По умолчанию все пользователи заходят на сайт как анонимный пользователь (я не включил «код входа»). По умолчанию анонимный пользователь не может использовать профиль ASP. Net для сохранения его данных в хранилище. Запрос «Set ()» для определенных свойств работает нормально, значения сохраняются во временном буфере, но не сохраняются в хранилище. Проблема решается просто, вы должны добавить к web.config или machine.config следующее:

<system.web>
      <anonymousIdentification enabled="true" />
</system.web>

и включить параметр allowAnonymous="true" в каждое определенное свойство (в web.config), например:

        <properties>
          <add name="AddressInfo" type="UserAddress" serializeAs="Binary" allowAnonymous="true"/>
        </properties>

ИЛИ не использовал анонимных пользователей.

PS> ASPNETDB.mdf в папке App_Data Сайты создаются автоматически при первом использовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...