【问题标题】:What do the ASP.NET Universal Providers enable that the default sql providers don't?ASP.NET 通用提供程序启用了哪些默认 sql 提供程序不启用的功能?
【发布时间】:2011-10-19 22:09:01
【问题描述】:

在 ASP.NET 通用提供程序 NuGet package 的自述文件中是此引用

在 ASP.NET 第 4 版中提供的 SqlMembershipProvider、SqlRoleProvider、SqlProfileProvider 类仅支持 Microsoft SQL Server 和 Microsoft SQL Server Express。它们不支持更新的产品,例如 Microsoft SQL Azure 和 Microsoft SQL Server Compact。

但是,当我为 Sql Azure http://support.microsoft.com/kb/2006191 运行自定义 aspnet_regsql 脚本,然后将我的 web.config 指向 SQL Azure 数据库时,ASP.NET 成员资格似乎可以正常工作。

谁能告诉我通用提供程序启用的 SQL Azure 究竟有哪些不适用的地方?

【问题讨论】:

  • Scott Hanselman 在他的博客that explains how to use it 上有一篇文章。但是除了会话状态之外,仍然没有解释 什么 不适用于默认提供程序
  • 经过一些实验,看起来使用通用提供程序可以自动为您配置 SQL Azure 数据库。而不是需要运行自定义 SQL 脚本来使数据库处于良好的初始状态,以便默认 SQL 提供程序可以工作。通用提供程序将在第一次尝试时自动创建所需的表。

标签: asp.net-membership azure-sql-database sqlmembershipprovider sqlprofileprovider sqlroleprovider


【解决方案1】:

据我所知,主要区别在于,当您连接到 Sql Azure 时,您需要实现 retry logic。发生连接错误时,原始提供程序不会重试,SQL Azure 会不时发生这种情况。

此外,原始提供程序不会引发包含完整 SQL 错误代码的异常,因此如果您的数据库受到限制,您将不知道正在应用哪个限制规则。至少 SQL Azure 支持团队是这样告诉我的 - 由于这个原因,我目前正在升级。

注意事项:通用提供者似乎使用与原始提供者不同的数据库架构,因此您需要迁移成员数据。如果您正在开始一个新项目,那么在与真实用户上线之前更改这些提供程序会容易得多!

【讨论】:

    【解决方案2】:

    通用提供程序使您能够在 sqlazure 上使用 asp.net 会员系统,并使实现 sql 不可知。您可以使用通用提供程序获取相同的应用程序并将数据源更改为 sql server/sqlexpress/sqlce/localdb 等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2016-04-23
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多