【问题标题】:is there any alternative for session会话有什么替代方法吗
【发布时间】:2017-05-20 19:41:59
【问题描述】:

还有其他方法可以保存我们的数据吗 在我们保存数据的会话中并不关心它的类型是什么 保存:

Session["instauser"] = _instaApi;

使用:

var IInstaApi = Session["instauser"] as InstaApi

我知道要保存在数据库或文件中,我们应该序列化数据,但我不能。 因为 InstaApi 包含

HttpClient , HttpClientHandler ,...

有没有像会话这样的东西? 但将数据保存在数据库或文件中,而不是像会话那样的内存。

更新

这是私有的 instagram api,我们创建它的实例并使用它登录(无论如何!),然后如果我们可以保存该对象(InstaApi 的实例),那么我们可以永远使用它,无需再次登录

【问题讨论】:

  • 你误用了Session对象,不要把它当成一个静态的万能容器来使用,它真的设计成只包含session数据(尽可能小)。这就是您在持久化这些对象时遇到问题的原因。
  • @Federico Dipuma 工作正常,但我不想使用 Session
  • 你永远不会成功序列化包含HttpClient , HttpClientHandler的复杂对象
  • 您可以使用全局缓存,它也将数据保存在内存中
  • 如果您更具体地了解您想要实现的目标会更好吗?为什么要在会话中存储 HttpClient 和 Handler?为什么不在会话中存储简单的细节并在以后使用它们来创建 HttpClient ?

标签: c# asp.net-mvc session


【解决方案1】:

如果它的目的是在控制器和 MVC 视图中使用,其他替代方案是 ViewBag, ViewData and TempData

ViewBagViewData life 只针对一个请求,而TempData 可以持久化。

【讨论】:

  • 这似乎回答了 OP 没有提出的问题。如果您在猜测,请在 cmets 中提出一个问题来澄清它。
【解决方案2】:

看看 APC_STORE,与 PHP 中的许多其他机制不同,使用 apc_store() 存储的变量将在请求之间保持不变。

http://php.net/manual/en/function.apc-store.php

【讨论】:

    猜你喜欢
    • 2021-08-20
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多