【问题标题】:How to use SessionState on load balanced Azure virtual machines如何在负载平衡的 Azure 虚拟机上使用 SessionState
【发布时间】:2017-08-09 17:23:29
【问题描述】:

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

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

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

我应该如何将 Azure 中的 sessionState 与 SQL Server 一起使用?

非常感谢!

【问题讨论】:

  • 我不被允许这样做,因为我需要超过 10 分才能发布两个链接!
  • 模组一定是疯了。我无法编辑问题以包含 @Joel'-' 链接,因为“指向 PasteBin 的链接”必须附有代码。
  • 如果您仔细查看前 4 个错误,您会发现脚本使用的许多命令不受支持,例如USE。快速谷歌搜索“.net database session state with azure db”会弹出这个链接:azure.microsoft.com/en-us/blog/…
  • 是的,不幸的是,链接的规则很严格。但我想它可以保持高质量。 Anwyay,感谢您的链接。但这是一篇 7 年前的博文,不再包含调整后的 SQL 脚本!

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


【解决方案1】:

我找到了一个相关的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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多