ASP.NET 通用提供程序和 session 状态

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

我正在开发一个 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/

相关文章:

asp.net - VirtualPath 在当前应用程序根目录之外

c# - 如何处理 WebFaultException 以返回 CustomException?

css - 拥有汉堡菜单始终可见的 Bootstrap 布局的最简单方法

asp.net-mvc-4 - 从控制台创建 WebAPI 帖子以在 json 数据中包含 $type

c# - 从 Entity Framework 查询转换到 NHibernate 时遇到问题

asp.net - ASP.NET MVC 部分 View 中的 AngularJS

c# - ASP.NET MVP 注入(inject)服务依赖

asp.net - JQuery:获取 ASP.NET CheckBoxList 控件中复选框的值/文本/innerHtml

asp.net-mvc - 在本地通过 IIS Express 使用 SSL 时如何配置 Web 代理?

c# - 在内存中缓存应用程序数据 : MVC Web API