【问题标题】:ASP.NET Profile doesn't persist dataASP.NET 配置文件不保留数据
【发布时间】:2020-02-26 22:07:07
【问题描述】:

我正在尝试使用 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 页的文本框和按钮上)对其进行了测试

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 标签的值,但没有写入数据库(也没有创建数据库本身 - ASPNETDB。 App_Data 文件夹站点中的 mdf)。重新打开页面后对应的个人资料属性和lblUserData标签为空。

【问题讨论】:

    标签: asp.net profile


    【解决方案1】:

    我找到了问题的根源。默认情况下,所有用户都以匿名用户身份登录到站点(我没有包括“登录代码”)。默认情况下,匿名用户不能使用 ASP.Net 配置文件将其数据保存到存储中。对特定属性的“Set()”请求工作正常,值保存到某个临时缓冲区,但不保存到存储中。问题决定很简单,你必须添加到web.configmachine.config下一个:

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

    并将allowAnonymous="true" 参数包含到每个定义的属性(在web.config 中),如下所示:

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

    或者没有使用匿名用户。

    P.S> App_Data 文件夹中的ASPNETDB.mdf 站点是在第一次使用时自动创建的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 2015-08-20
      相关资源
      最近更新 更多