MVC在一次通话中锁定和解锁会话

时间:2017-11-18 01:23:22

标签: ajax asp.net-mvc session asp.net-mvc-5

我想在MVC 5中实现一种特殊的行为。

我有一个ajax调用,在页面加载后启动,调用缓慢的第三方API。 流程如下:

  1. 控制器接听电话。
  2. Controller访问一些会话资源。
  3. 控制器调用第三方API。
  4. 控制器更新会话变量。
  5. 控制器应答请求。
  6. 我无法向客户端返回信息,因为它包含敏感数据,所以我无法在单独的调用中将其保存在客户端,然后在无状态操作上调用第三方API,因为我必须返回调用客户端之后进行会话更新的结果。

    这就是我想要实现的目标:

    1. 控制器接听电话。
    2. Controller访问一些会话资源。
    3. 解锁会话以允许cocurent调用访问它。
    4. 控制器调用第三方API。
    5. 锁定会话并更新会话变量。
    6. 控制器应答请求。
    7. 是否可以实现?

      感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,经过一些尝试和错误,我找到了一个解决方案,但它很难看。

我所做的是使用请求的guid在应用程序缓存上缓存请求参数。将guid传递给客户端,该客户端将调用无状态控制器,该控制器将调用缓慢的第三方API并且不会持有其他ajax调用。一旦完成,将guid返回给客户端,该客户端将执行第三次ajax调用以将api结果应用于会话变量,然后刷新html。

不是最好的,但到目前为止工作完美,我会做一些更改来重用缓存的请求。