在应用程序内存中保留不可序列化的对象

本文关键字:序列化 对象 保留 应用程序 内存 | 更新日期: 2023-09-27 18:03:54

在我的asp.net网站上,我为每个用户使用第三方组件来提供数据和包含操作。不幸的是,组件初始化非常慢(大约1-2秒(——太长了,无法初始化每个页面请求。

所以我正在尝试将这个对象存储在我的应用程序中。但无论如何,在下一个页面请求之后它都是空的。当然,简单的对象正在按预期工作。

到目前为止,我已经尝试过

  • 静态变量
  • HttpContext.Session
  • HttpContext.Cache
  • TempData

在所有情况下,我的应用程序都会忘记所有内容,但我不会出现任何错误。

有什么方法可以实现将这些对象保存在内存中吗?

这是我的最简单的例子。当我交换值来字符串时,一切都很好。有了这个对象,我在Login方法中得到了null

public class HomeController : Controller
{
    public static IFrameworkItem Test;
    // GET: Home
    public ActionResult Index()
    {
        Test = FrameworkItem.Create("admin", "admin");
        return View();
    }
    public ActionResult CreateItem(string username, string password)
    {
        var test = HomeController.Test;
        return null;
    }
}

在应用程序内存中保留不可序列化的对象

好吧,经过几个小时的搜索,我发现这个框架会登录一个不在App_Data中的文件。所以我想每次发现文件更改时,ASP.NET网站都会重新启动。

这是一个非常糟糕的问题,但现在通过禁止这种行为来解决。