【发布时间】:2015-08-14 19:42:52
【问题描述】:
在我的 asp.net 网站上,我使用第三方组件为每个用户提供数据和包含操作。不幸的是,组件初始化非常慢(大约 1-2 秒) - 初始化每个页面请求的时间太长了。
所以我试图将这个对象存储在我的应用程序中。但无论如何,在下一页请求之后它都是空的。当然,简单对象按预期工作。
我已经试过了
- 静态变量
- HttpContext.Session
- HttpContext.Cache
- 临时数据
在所有情况下,我的应用程序都会忘记所有内容,但我没有收到任何错误。
有什么方法可以将这些对象保存在内存中?
这是我的最小示例。当我将值交换为字符串时,一切正常。有了这个对象,我在 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;
}
}
【问题讨论】:
-
虽然它应该与
static一起使用,但您可以将它托管在 Windows 服务中,让您的 Web 应用程序与该服务对话。 -
HttpContext.Session 和 HttpContext.Cache 应该记住请求之间的内容...您是否正确初始化它?用户是否登录(HttpContext.Session),您如何使用HttpContext.Cache?
-
@CodeCaster 我想过这个问题,但由于它需要更多(?)开发,我宁愿解决这个问题。
-
@BjørnØyvindHalvorsen 在请求之间,我保存这个对象。重新启动后,我希望这种行为 ;)
-
我认为这太过分了。这是一件非常简单的事情,应该弄清楚。不需要为此提供服务。这是标准的生命周期过程。在我看来,你会浪费很多时间,并在以后再次遇到这个问题...... :) 测试你是否可以将字符串保存在静态变量中,然后再次检索它......