【问题标题】:MVC Lock and unlock session on one callMVC 一次通话锁定和解锁会话
【发布时间】:2018-05-01 20:56:36
【问题描述】:

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

我有一个在页面加载后启动的 ajax 调用,它调用了一个缓慢的第三方 API。 流程是这样的:

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

我无法将信息返回给客户端,因为它包含敏感数据,因此我无法在单独的调用中执行此操作以在客户端保存数据,然后在无状态操作上调用第三方 api,因为我必须返回调用客户端的结果,然后进行会话更新。

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

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

可以实现吗?

感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 2014-01-29
      • 1970-01-01
      相关资源
      最近更新 更多