Asp.net 在Azure中使用SQL作为会话缓存

Asp.net 在Azure中使用SQL作为会话缓存,asp.net,session,azure,caching,azure-sql-database,Asp.net,Session,Azure,Caching,Azure Sql Database,我目前正在寻找在Azure Webservice中使用会话缓存的最佳方法。由于使用了多个实例,标准asp.net会话状态不起作用 我发现一些文档可以通过使用外部会话状态提供程序来解决这个问题,该提供程序允许使用共享缓存(Redis cache)或SQL作为外部提供程序 但是,尽管我找到了很多关于如何配置Redis缓存的文档,但我没有找到一个关于如何配置Azure SQL数据库进行缓存的示例 如果Azure中仍然支持此功能:您可以提供一个示例吗?您可以通过以下方式完成此操作: <sessi

我目前正在寻找在Azure Webservice中使用会话缓存的最佳方法。由于使用了多个实例,标准asp.net会话状态不起作用

我发现一些文档可以通过使用外部会话状态提供程序来解决这个问题,该提供程序允许使用共享缓存(Redis cache)或SQL作为外部提供程序

但是,尽管我找到了很多关于如何配置Redis缓存的文档,但我没有找到一个关于如何配置Azure SQL数据库进行缓存的示例

如果Azure中仍然支持此功能:您可以提供一个示例吗?

您可以通过以下方式完成此操作:

 <sessionState mode="SQLServer"
sqlConnectionString="Server=tcp:[serverName].database.windows.net;Database=myDataBase;User ID=[LoginForDb]@[serverName];Password=[password];Trusted_Connection=False;Encrypt=True;"
cookieless="false" timeout="20" allowCustomSqlDatabase="true" />

更好的解决方案是使用表存储,因为可以在表存储中指定对象的生存期


更多信息:

此方法可以避免需要知道如何手动创建AspNetSessionState数据库对象:

1) 安装NuGet软件包:

ASP.NET通用提供程序在ASP.NET 4中为所有版本的SQL Server 2005和更高版本以及SQL Azure添加提供程序支持。如果您使用这些提供商开发您的应用程序,该应用程序将为Azure等云环境做好准备

它依赖于
EntityFramework
,但我想我们会接受这一点。它将此添加到web.config
部分:

<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>

你能再详细说明一下“更好的解决方案是表存储”吗?Azure会话状态产品在过去几年中发生了很大变化,您提供的链接已有几年历史。在我的研究中,我看到很多人说TS速度慢,我找不到最近使用TS进行会话状态处理的人的例子,我想知道你是从哪里得到的,因为我有一个类似的要求,你可以找到任何例子,因为Azure上不再支持表存储。缓存在哪里以这种方式持久化的?根据我未能找到的ConnectionString部分include:-)我提供的代码段引用了
connectionStringName=“YourSessionConnectionStringName”
    <sessionState mode="Custom" customProvider="DefaultSessionProvider" xdt:Transform="Replace">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider" connectionStringName="YourSessionConnectionStringName" />
  </providers>
</sessionState>
<connectionStrings>
<add name="YourSessionConnectionStringName" connectionString="server=SessionServer;database=SessionDb;uid=SessionUser;password=SessionUserPassword;" />
</connectionStrings>