如何在负载平衡的Azure虚拟机上使用SessionState

时间:2017-08-08 07:41:50

标签: c# .net sql-server azure session-state

我编写了一个.NET应用程序,我想在Azure上托管,使用(至少)两个虚拟机,一个负载均衡器和一个SQL服务器数据库。

根据this页面,我必须在表存储,SQL Server和Redis缓存之间进行选择。

我希望使用SQL Server进行会话存储,因为我已经有了一个SQL服务器实例。但是,当我使用aspnet_regsql.exe的步骤时,我得到超时。我还导出了使用aspnet_regsql.exe生成的脚本,然后通过SSMS运行它,但它返回了大量的错误。 (链接到第一条评论中发布的脚本和错误)

我应该如何在Azure中使用带有SQL Server的sessionState?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我找到了相关的blog,请尝试按照以下步骤操作:

  

1.使用ASP.NET SQL Server注册工具

设置会话状态数据库
 %Windows%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regsql.exe -S MyCluster\Prod -U sa -P topsecret -ssadd -ssype p
  

2.在web.config中配置连接字符串   我强烈推荐在连接字符串中包含应用程序名称并保持连接时间不足。

<connectionStrings>
  <add name="SessionConnectionString"
    connectionString="Data Source=MyCluster\Prod,1234;user=sa;pwd=topsecret;Connect Timeout=10;Application Name=xxxx;Current Language=English" />
</connectionStrings>
  

3.在web.config中设置机器密钥   如果您在多个服务器或云中运行该站点,则必须这样做。

<system.web>
   <machineKey xdt:Transform="Insert"
     validationKey="..."
     decryptionKey="..."
     validation="SHA1" decryption="AES" />
</system.web>
  

4.在web.config中配置会话状态

<system.web>
  <sessionState mode="SQLServer"
     sqlConnectionString="SessionConnectionString"
     compressionEnabled="true"
     cookieless="false"
     timeout="20"/>
</system.web>