【问题标题】:Where is ASP.NET Storing User Data?ASP.NET 在哪里存储用户数据?
【发布时间】:2012-06-04 20:34:23
【问题描述】:

我看到了一些奇怪的行为,我确信有一个我看不到的简单解释。

使用 Visual Studio 2012 RC、MVC 4,我创建了一个标准的 Internet 应用程序(使用 Forms 身份验证)。然后我使用 aspnet_regsql 将成员资格表添加到我的数据库中。然后我更新了 Web.config 连接字符串以指向我的自定义数据库:

<add name="NewEdCoConnectionString" connectionString="Data Source=localhost\sqlexpress2012;Initial Catalog=NewEdCo;Integrated Security=True" providerName="System.Data.SqlClient" />

当然,更新了 Web.config 中的提供程序节点以使用该连接字符串。

它工作正常。我可以在通常的 IIS Express 中启动应用程序,注册用户,以该用户身份登录等。我终止应用程序,重新启动,我仍然可以以该用户身份登录。所以它正在持久化数据。

但是,在 SQL Server Management Studio 中,当我 SELECT * FROM 任何 aspnet_* 表时,它们不包含任何数据。

它将这些数据保存在哪里?

【问题讨论】:

  • 您可能看不到正确的数据库。 (以太你,以太你网络应用程序)
  • @Aristos:但它会是什么其他数据库?这就是问题所在。我已经通过更改连接字符串的名称测试了 Web.config,这预计会引发错误,因为提供程序无法找到该名称的字符串。我通过使连接字符串本身无效(指定不正确的初始目录)运行了另一个测试,它继续工作。所以它正在寻找那个连接字符串name,但它没有使用实际的连接字符串。那么它会用什么?
  • 您是否打开了名为NewEdCo 的数据库或其他数据库?至少在我的数据库中,数据在那里:)
  • @Aristos:在 SQL Management Studio 中?服务器上没有其他数据库(除了master 等等)。但是,是的,该数据库存在,我明确地从中选择:SELECT * FROM NewEdCo.dbo.aspnet_Users
  • 所以你看,我一开始是对的,你看看别的地方:)

标签: asp.net forms-authentication asp.net-mvc-4


【解决方案1】:

事实证明,正如@Aristos 在 cmets 中就上述问题所暗示的那样。它使用了不同的数据库,尽管我目前不确定如何。数据库之间的区别是:

localhost\SQLEXPRESS2012

对比

DAVIDDONAHU436A\SQLEXPRESS2012

如果这是一个网络环境,我会假设命名主机不是本地主机。但这是一个沙盒虚拟机。我已经确认有问题的主机就是那个名字。不知何故,同一主机上有两个同名的 SQL 实例绑定到不同的主机名条目。

很奇怪。

【讨论】:

  • 更奇怪的是......在重新启动 SQL Management Studio 并连接到上述两个地址后,两个现在都显示正确的数据库(实际上,相同数据库,因为对其中一个的更改会反映在另一个中)。听起来像是 SQL 2012 或 Windows 8 或它们的组合中的一些奇怪行为。
【解决方案2】:

在以后的版本中,数据不存储在 aspnet_... 中,而是存储在用户和角色中。在此处查看更多信息:Aspnet web site administration tool, Users table or aspnet_users table

【讨论】:

  • 目标数据库中不存在这些表。那么它会使用什么其他数据库呢?
猜你喜欢
  • 2019-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-08
  • 1970-01-01
  • 2017-05-13
相关资源
最近更新 更多