【问题标题】:How to handle session management on cloud hosting in asp.net webform based website如何在基于 asp.net webform 的网站中处理云托管上的会话管理
【发布时间】:2015-06-09 15:15:37
【问题描述】:

假设我有一个在 .net 4.0 框架上使用 asp.net webforms 开发的网站,需要迁移到像 rackhosting 这样的云托管。

本网站目前使用 asp.net 默认成员身份进行用户管理,也使用多个会话变量来存储临时变量。

本网站托管在内部托管的专用服务器上。

所以我的问题是

  • 如何让它在云主机上运行
  • 一种方法是使用基于 MS Sql Server 的会话管理
  • 我还需要考虑什么才能使其在云托管上运行

我对云托管没有经验,因为有人对服务提供商提供的云托管架构感到困惑。微软 Azure、亚马逊等。

任何指向一篇好文章和代码示例的指针都是很好的开始

【问题讨论】:

  • 您会使用多个服务器吗?即您是否需要跨不同服务器的会话状态?
  • 是的,我需要跨服务器的会话...假设我在上传后将图像值存储在会话中,如果此时保存请求由另一台服务器处理,则会话将为空。
  • 我记得我在服务器场上遇到过这个问题,在共享主机上,当我尝试保存存储在会话变量中的会话值时,我的会话一直为空。通过添加机器密钥解决了这种情况下的问题,以便每个用户会话将始终由该特定服务器处理。但我不确定它在云上是如何工作的..

标签: c# asp.net asp.net-mvc webforms cloud-hosting


【解决方案1】:

您将需要使用跨服务器的会话状态提供程序。 例如一个使用App Fabric(或其他缓存提供程序)或Sql Server

【讨论】:

    【解决方案2】:

    对于共享会话,您有 2 个选项:
    1. 粘性会话,最容易实现,因为无需对代码进行任何更改,但您将无法自动缩放(根据负载添加或减少机器数量)。这只是您的负载均衡器上的一个设置,因此您需要检查您的云提供商的负载均衡器是否有此设置。

    2. Out of proc session,这里我建议使用ASP.NET Redis session provider(微软支持)。 AWS 和 Azure 都提供 Redis 作为服务,所以很容易上手,你不需要考虑它的管理。最重要的 proc 将意味着一些代码更改,至少将会话中的类标记为 Serilizable,但您将能够自动缩放。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 2016-09-15
      相关资源
      最近更新 更多