首页 > 解决方案 > 负载均衡场景下AppDomain便捷信息丢失

问题描述

我在 LoadBalanced 服务器的 AppDomain 内存中使用来自 HttpContext 和 ClaimsIdentity 的方便信息。即使 Session 存储在 outProc/SqlServer 中,也无法在其他 LoadBalanced Server 上访问。
下面是特定于每个 LoadBalanced Server 的 MVC.Net 5 代码:

@using Microsoft.AspNet.Identity
@using System.Security.Claims
@using ClaimTypes = System.IdentityModel.Claims.ClaimTypes

((ClaimsIdentity)User.Identity).FindFirstValue(ClaimTypes.GivenName)
@HttpContext.Current.User.IsInRole("RoleName")

我知道还有其他方法可以访问 RoleName 和 GivenName(比如从 DB 获取)。但是有没有办法在 LoadBalanced 服务器之间共享这个方便的信息(HttpContext.Current.User 和 User.Identity)?如果不是,那么在 LoadBalanced 服务器之间共享此信息的最佳方式是什么?

标签: .netasp.net-mvc-5load-balancinghttpcontextweb-farm

解决方案


在负载均衡服务器的 webconfig 中输入 MachineKey 即可解决问题。


推荐阅读