2

我正在开发一个 ASP.NET MVC 4 网站,并且正在使用Microsoft ASP.NET Universal Providers。我计划部署到 Windows Azure 并使用 SQL 数据库。为了在我的本地 SQL Server 2008 数据库上初始化成员资格、配置文件和角色,我通过 ASP.NET 网站管理工具创建了一个新用户。如何初始化会话?

当我的应用程序运行时,我自然会得到一个 SqlException 说“无效的对象名称 dbo.Sessions”。在 Windows Azure 上进行测试时,这不是问题。dbo.Sessions 是自动创建的。从 Azure 上的 dbo.Sessions 生成创建表脚本并将其应用到我的本地 SQL 数据库后,我可以在本地运行。

网络配置:

<membership hashAlgorithmType="SHA1" defaultProvider="DefaultMembershipProvider">
  <providers>
    <clear />
    <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" passwordFormat="Hashed" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
  </providers>
</membership>
<profile enabled="false" defaultProvider="DefaultProfileProvider">
  <providers>
    <clear />
    <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</profile>
<roleManager enabled="false" defaultProvider="DefaultRoleProvider">
  <providers>
    <clear />
    <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</roleManager>
<sessionState mode="Custom" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers" connectionStringName="DefaultConnection" applicationName="/" />
  </providers>
</sessionState>
4

2 回答 2

2

本文更详细地介绍了旧的 aspnet_Memembership 与 Universal Providers 之间的区别。

http://dotnet.dzone.com/articles/stronger-password-hashing-net

文章的关键点:

首先,没有更多的 aspnet_regsql,您只需确保设置了连接字符串并且该帐户具有 DBO 权限(不用担心,它不必保持这种状态)然后运行应用程序并尝试执行任何操作应该导致会员提供者访问数据库(即登录 - 没有帐户并不重要)。

当它起作用时,这就是它的全部内容。

于 2012-08-14T17:05:40.920 回答
0

当您使用 Microsoft ASP.NET 通用提供程序部署到 Windows Azure 和 SQL 数据库时,您的连接字符串似乎存在一些问题,因为 SQL 数据库上的表未创建。

以下来自 Soctt 的博客显示了有关如何执行此操作的分步详细信息,因此请关注并查看缺少的内容:

介绍 System.Web.Providers - 用于 SQL Compact 和 SQL Azure 上的会话、成员资格、角色和用户配置文件的 ASP.NET 通用提供程序

于 2012-06-25T19:18:37.723 回答