2017-11-18 286 views
-1

会话有一种特殊的行为,我想在MVC 5MVC锁定和解锁一个呼叫

我有一个AJAX调用,调用一个缓慢的第三方API页面加载后开始实现。 流程如下:

  1. 控制器接收呼叫。
  2. 控制器访问一些会话资源。
  3. 控制器调用第三方API。
  4. 控制器更新会话变量。
  5. 控制器应答请求。

我不能信息返回给客户端,因为它包含敏感数据,所以我不能让这个在方式隔开呼吁召开在客户端的数据,然后调用第三方API无状态的行动,因为我会必须将呼叫结果返回给客户端,以便进行会话更新。

这是我想什么acheive:

  1. 控制器接收呼叫。
  2. 控制器访问一些会话资源。
  3. 解锁会话以允许共享呼叫访问它。
  4. 控制器调用第三方API。
  5. 锁定会话并更新会话变量。
  6. 控制器应答请求。

是不是可以接受的?

感谢您的帮助。

回答

0

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

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

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