我正在开发一个 ASP.NET MVC 4 网站,并且我正在使用 Microsoft ASP.NET Universal Providers 。我计划部署到 Windows Azure 并使用 SQL 数据库。为了初始化本地 SQL Server 2008 数据库上的成员资格、配置文件和角色,我通过 ASP.NET 网站管理工具创建了一个新用户。如何初始化 session ?
当我的应用程序运行时,我自然会收到一个 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>
最佳答案
本文更详细地介绍了旧版 aspnet_Memembership 与通用提供程序之间的差异。
http://dotnet.dzone.com/articles/stronger-password-hashing-net
文章要点:
首先,不再有 aspnet_regsql,您只需确保连接字符串已设置并且帐户具有 DBO 权限(不用担心,不必保持这种状态),然后运行应用程序启动并尝试执行任何操作,这会导致成员(member)提供商访问数据库(即登录 - 没有帐户并不重要)。
这就是它工作时的全部内容。
关于ASP.NET 通用提供程序和 session 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105759/