asp.net – 正确设置需要粘性会话的负载均衡网络?
我在这个问题上找到了很多q& a,但我仍然没有找到适合我们服务器的配置.背景是:我们在负载均衡器后面有两个Web服务器,并且必须确保用户不会丢失其会话.
> Web服务器是IIS7 / ASP.NET 4. 据我了解,必须确保以下内容: >在两台Web服务器上设置相同的机器密钥. 是否有必要预编译站点? (我知道它更快,但我们失去了一些灵活性) 由于我们有粘性会话,使用相同的机器密钥只会影响用户会话超时并且因此他/她最终在另一台服务器上的情况是正确的(这意味着包含视图状态的回发可能无效,除非他们有相同的机器钥匙?) 解决方法
你在所有方面都是正确的 – LB上的粘性会话将确保在后续请求中点击相同的Web服务器,因此可以使用正确的进程内会话状态.但是,LB粘性必须与(或应该更多)与ASP.NET会话的超时值匹配.例如,如果LB使用cookie进行粘性,则cookie的到期时间应该大于ASP.NET会话的时间.
相同的机器密钥参数对于请求的回发因任何原因转到其他服务器的情况很有用.客户端状态(例如视图状态和事件验证,可能是身份验证票证)使用机器密钥加密,因此具有相同的密钥可确保任何服务器都可以为后备提供服务.在旁注中,在所有Web场方案中,在所有Web服务器上具有精确的S / W环境(以及可能的H / W环境)以避免任何意外,这是100%有意义的. 需要预先编译网站以避免序列化冲突 – 序列化/反序列化时类型名称必须相同.因此,您不能从动态生成的程序集中获得序列化类型,并且每次编译都可以避免这种情况. IMO,这更有可能影响视图状态存储而不是会话状态(因为您的会话状态是任何不共享的方式,并且在第二台服务器上不可用).最后,如果您不使用网站而不是使用Web应用程序项目,那么这一点或多或少变得无关紧要,因为在构建项目时,代码文件无论如何都会被编译.只有页面(标记)会被动态编译,并且标记中可序列化类型的几率几乎为零(听起来好像是坏主意). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 运行时MVC更新FormsAuthenticationTicket UserD
- asp.net-core – 实体框架核心以编程方式应用迁移
- asp.net mvc 之旅—— 第二站 窥探Controller下的各种Resul
- 五幅图演示ASP.NET编译过程
- asp.net-mvc – MVC 4捕获所有路由从未到达
- asp.net-mvc – ASP MVC查看内容为JSON
- asp-classic – 如何从此ADODB.Recordset获取插入ID?
- asp.net-mvc – 如何在运行时之前编译cshtml
- asp.net-mvc – ASP.NET MVC和IIS 5
- asp.net-mvc – JsonIgnore在System.Web.Mvc.Controller中不
- asp.net – .Net SQL Server连接字符串 – 隐藏其
- asp.net – MVC标识||禁用所有cookie并“记住我”
- 在asp.net发送简讯到大约10000封电子邮件
- Asp.net身份密码散列
- asp.net – 在IHTTPHandler中以编程方式创建Syst
- asp.net – 如何动态更改母版页
- .net – 将MVC应用程序作为独立应用程序运行
- asp.net-mvc – 缩小ASP.NET MVC中的Action Filt
- 如何在codenameone中使用ASP.Net wsdl web服务
- asp.net – ActiveDirectoryMembershipProvider“