【问题标题】:ASP.NET Universal Providers and Session StateASP.NET 通用提供程序和会话状态
【发布时间】:2012-06-19 16:59:04
【问题描述】:

我正在开发一个 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 数据库后,我可以在本地运行。

web.config:

<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>

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-4 azure-sql-database universal-provider


    【解决方案1】:

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

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

    文章要点:

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

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

    【讨论】:

    • 有一件事几乎让我发疯。我在玩这个,使用 Studio 2012 和 IIS Express,并且在配置中做错了。我后来修复了它,但异常并没有消失。一时兴起,我关闭了正在运行的 IIS Express 实例——然后它就开始工作了。我假设它在某处存储了一个标志,表示表应该已经存在。
    【解决方案2】:

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

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

    Introducing System.Web.Providers - ASP.NET Universal Providers for Session, Membership, Roles and User Profile on SQL Compact and SQL Azure

    【讨论】:

      猜你喜欢
      • 2012-08-23
      • 1970-01-01
      • 2013-07-21
      • 2014-12-24
      • 2011-06-23
      • 2015-06-18
      • 2013-03-12
      • 2015-03-10
      • 2015-11-28
      相关资源
      最近更新 更多