【发布时间】:2011-01-12 01:07:27
【问题描述】:
您好,
当您编写 ASP .Net 网站时,我必须考虑哪些应用程序将在具有 IIS 负载平衡器的环境中运行?
所有用户会话都由他们自己运行,会话之间没有共享数据。与 MSSQL 的单一连接。供下载的图像和文件将托管在一台服务器上。
Windows Server 2008、C# 和 .Net 4.0。
【问题讨论】:
标签: asp.net iis load-balancing
您好,
当您编写 ASP .Net 网站时,我必须考虑哪些应用程序将在具有 IIS 负载平衡器的环境中运行?
所有用户会话都由他们自己运行,会话之间没有共享数据。与 MSSQL 的单一连接。供下载的图像和文件将托管在一台服务器上。
Windows Server 2008、C# 和 .Net 4.0。
【问题讨论】:
标签: asp.net iis load-balancing
最明显的项目是会话状态。如果您进行负载平衡,来自同一用户的多个请求可能会在服务器之间移动。 ASP.NET(进程内)的默认会话提供程序不支持这一点(用户每次移动时都会获得一个新会话)。最简单的解决方案是移动到 ASP.NET 状态服务器或 SQL Server 会话。
仅供参考:这两种解决方案都要求您放入 Session 的所有内容都是 [Serializable]。 in-proc 提供程序没有此要求,因此您可能会在更改提供程序时看到一些运行时错误并且需要修改您的代码。
【讨论】:
您需要将会话状态移动到会话状态服务中。避免将对象保留在会话中...如果您必须将对象保留在会话中,请确保使用 Serializable 属性标记它(这是通过序列化存储的方式)。
一般来说,避免使用会话。请记住,ASP.Net 会话!= FormAuthentication。根据应用程序的性质,您的数据库很可能早在 Web 服务器之前就成为瓶颈。
【讨论】: