C# 在WebAPI 2中,应用程序状态对某些用户有效,但对其他用户无效
在我的C# 在WebAPI 2中,应用程序状态对某些用户有效,但对其他用户无效,c#,asp.net,iis,asp.net-web-api2,load-balancing,C#,Asp.net,Iis,Asp.net Web Api2,Load Balancing,在我的ASP.NET Web API 2中有一个非常基本的控制器,其中一个HTTPGet方法将在ApplicationState中设置日期时间并返回它,然后第二个HTTPGet方法将仅从app state返回该变量,或者如果该变量为null,则返回一个新的日期时间(0001-01-01T00:00:00) [Route("appstate1")] [HttpGet] public DateTime appState1() { HttpContext
ASP.NET Web API 2
中有一个非常基本的控制器,其中一个HTTPGet方法将在ApplicationState中设置日期时间并返回它,然后第二个HTTPGet方法将仅从app state返回该变量,或者如果该变量为null,则返回一个新的日期时间(0001-01-01T00:00:00)
[Route("appstate1")]
[HttpGet]
public DateTime appState1()
{
HttpContext.Current.Application["dt"] = DateTime.Now;
return (DateTime?)HttpContext.Current.Application["dt"] ?? new DateTime() ;
}
[Route("appstate2")]
[HttpGet]
public DateTime appState2()
{
return (DateTime?)HttpContext.Current.Application["dt"] ?? new DateTime();
}
所以这是活的
- 我去
并设置时间:(2017-05-31T09:14:19.4130002-07:00)https://example.com/api/appstate1
- 然后我进入
:(2017-05-31T09:14:19.4130002-07:00)https://example.com/api/appstate2
- 同事A转到
:(0001-01-01T00:00:00)…appstate2
- 同事B转到
:(2017-05-31T09:14:19.4130002-07:00)…appstate2
在阅读了我自己的帖子后,我立即想起我的API在两台服务器之间实现了负载平衡……所以我想这不是一个c#问题,而是一个服务器/IIS问题,但它仍然存在,因为我不知道如何在两台服务器上持久保存数据。所以不要将状态存储在内存中?将其存储在双方都可以访问的公共位置。这就是数据库的用途。@mason API在其他地方调用db,但某些日期不需要达到第二个数据,我们宁愿让它占用服务器内存,也不愿每次需要时都调用db。(据我所知,这是国家数据目标的一部分)我知道还有其他方法可以做到这一点,但我的问题是如何让这种方法发挥作用。我已经回答了如何让它发挥作用。将其存储在公共位置。就像一个数据库。缓存结果,如果这最终导致性能下降,并且您不需要最新的数据,但不要尝试预优化。我相信,代理上的粘性会话也可以做到这一点?