.net - 负载均衡场景下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 服务器之间共享此信息的最佳方式是什么?
解决方案
在负载均衡服务器的 webconfig 中输入 MachineKey 即可解决问题。
推荐阅读
- python - 如果字段存在,则对规则进行两种不同的验证
- python - 如何重新定义变量
- python - 如何缩放二进制掩码图案
- php - 为 Woocommerce 电子邮件主题启用自定义字段占位符
- multithreading - lock_guard 两个临界区和一个互斥锁
- ios - 使用像素/点值创建和渲染 SceneKit 节点?
- rest - 使用 REST API 获取与 Azure Devops 中的构建相关的更改
- css - 光标的 SVG 表示无效的属性值
- arrays - 我不明白这个问题中的等号如何影响字符串数组(Java)
- r - 通过循环(R)将大数值向量组合成一个数据帧