C# 如何处理粘性会话问题?

C# 如何处理粘性会话问题?,c#,session,iis,webserver,load-balancing,C#,Session,Iis,Webserver,Load Balancing,我遇到了这样一个奇怪的问题:我的应用程序中很少有用户在使用该应用程序时从dock拔出笔记本电脑并移动到WIFI网络,现在在更改网络后,当他们单击应用程序中的任何导航时,它会将他们带回到登录页面,其中提到会话已过期 后台:承载应用程序的服务器具有负载平衡器,可动态路由输入请求,因此,当用户从一个网络转到另一个网络时,由web浏览器维护的旧会话保持打开状态,但load Blancher将其标识为新请求,并因此分配给下一个需要登录的可用服务器,现在,如果用户幸运地被路由到他之前所在的同一个web服务器

我遇到了这样一个奇怪的问题:我的应用程序中很少有用户在使用该应用程序时从dock拔出笔记本电脑并移动到WIFI网络,现在在更改网络后,当他们单击应用程序中的任何导航时,它会将他们带回到登录页面,其中提到会话已过期

后台:承载应用程序的服务器具有负载平衡器,可动态路由输入请求,因此,当用户从一个网络转到另一个网络时,由web浏览器维护的旧会话保持打开状态,但load Blancher将其标识为新请求,并因此分配给下一个需要登录的可用服务器,现在,如果用户幸运地被路由到他之前所在的同一个web服务器上,那么一切正常,否则他将被重定向到新的web浏览器

请帮助我解决罕见的场景问题。 提前谢谢


Vishal

此问题主要取决于负载平衡器和粘性的持久性

一些平衡器在内部处理粘性持久性,因此它们在客户端IP和路由之间有一个表。你的案子听起来是这样的


现在,如果将持久性从内部表转移到cookie(或URL附录),就可以解决这个问题。通过使用cookie,客户端将在每个请求上发送cookie,负载平衡器可以检查请求的路由是否仍然有效,然后为请求提供服务。Apache()有一个非IIS的例子,它们是如何实现粘性的,但可行性取决于您的平衡器。

既然您已经实现了负载平衡,那么问题就在于是否将会话存储在Jsession或Cookie中,为了避免这个问题,我建议您配置服务器以使用Cookie。默认情况下,Tomcat7(我相信Tomcat8)配置为使用Jsession

什么是负载平衡器?(例如,它是Windows网络负载平衡器吗?)