2011-01-11 43 views
3

问候平衡,负载与IIS和ASP.NET的

我有什么,当你的问候,如果应用程序将在一个环境中运行的编码的ASP.NET的网站,有一个负载均衡考虑IIS?

所有用户会话都由他们自己运行,会话之间没有共享数据。到MSSQL的单一连接。下载的图像和文件将托管在一台服务器上。

Windows Server 2008's,C#和.Net 4.0。

回答

7

最明显的项目是会话状态。如果您负载均衡,则来自同一用户的多个请求可能会在服务器之间移动。 ASP.NET的默认会话提供程序(in-proc)不支持此操作(每次移动时用户都会获得一个新会话)。最简单的解决方案是转移到ASP.NET状态服务器或SQL Server会话。

仅供参考:这两种解决方案都要求您放入Session的所有内容都是[Serializable]。进程内提供程序没有此要求,因此您可能会看到一些运行时错误,并且在更改提供程序时需要修改代码。

+0

请注意,您的负载均衡器可能有一个名为“粘性会话”或亲和性的选项,可以将用户发送到随机分配的同一台服务器。这会伤害你的负载平衡,但它确实让你继续使用进程内会话状态。 – David 2011-01-11 17:18:05

0

您将需要将会话状态转移到会话状态服务中。避免在会话中保留对象...如果您必须在会话中保留一个对象,请确保它已用Serializable属性标记(这是通过序列化存储的方式)。

通常,避免使用会话。请记住,ASP.Net Session!= FormAuthentication。根据应用程序的性质,您的数据库很可能在Web服务器之前就成为瓶颈。