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();
    }
所以这是活的

  • 我去
    https://example.com/api/appstate1
    并设置时间:(2017-05-31T09:14:19.4130002-07:00)
  • 然后我进入
    https://example.com/api/appstate2
    :(2017-05-31T09:14:19.4130002-07:00)
  • 同事A转到
    …appstate2
    :(0001-01-01T00:00:00)
  • 同事B转到
    …appstate2
    :(2017-05-31T09:14:19.4130002-07:00)
更新1


在阅读了我自己的帖子后,我立即想起我的API在两台服务器之间实现了负载平衡……所以我想这不是一个c#问题,而是一个服务器/IIS问题,但它仍然存在,因为我不知道如何在两台服务器上持久保存数据。

所以不要将状态存储在内存中?将其存储在双方都可以访问的公共位置。这就是数据库的用途。@mason API在其他地方调用db,但某些日期不需要达到第二个数据,我们宁愿让它占用服务器内存,也不愿每次需要时都调用db。(据我所知,这是国家数据目标的一部分)我知道还有其他方法可以做到这一点,但我的问题是如何让这种方法发挥作用。我已经回答了如何让它发挥作用。将其存储在公共位置。就像一个数据库。缓存结果,如果这最终导致性能下降,并且您不需要最新的数据,但不要尝试预优化。我相信,代理上的粘性会话也可以做到这一点?