ASP.Net缓存对象未在不同的PC之间共享

ASP.Net缓存对象未在不同的PC之间共享,asp.net,caching,web-applications,Asp.net,Caching,Web Applications,我有一个ASP.Net 4.0 web应用程序,我使用以下代码提取数据并将其放入缓存10分钟: List<Student> students = new List<Student>(); if (System.Web.HttpRuntime.Cache["MyStudents"] != null) { students = (List<students >)System.Web.HttpRuntime.Cache["MyStudents"];

我有一个ASP.Net 4.0 web应用程序,我使用以下代码提取数据并将其放入缓存10分钟:

List<Student> students = new List<Student>();

if (System.Web.HttpRuntime.Cache["MyStudents"] != null)
{
    students = (List<students >)System.Web.HttpRuntime.Cache["MyStudents"];
    Response.Write("Get From Cache");
}
else
{
    students = MyClass.GetStudents();
    System.Web.HttpRuntime.Cache.Insert("MyStudents", students, null, DateTime.Now.AddMinutes(10), TimeSpan.Zero);
    Response.Write("Get From DB");
}
List students=newlist();
if(System.Web.HttpRuntime.Cache[“MyStudents”]!=null)
{
students=(List)System.Web.HttpRuntime.Cache[“MyStudents”];
Write(“从缓存获取”);
}
其他的
{
students=MyClass.GetStudents();
System.Web.HttpRuntime.Cache.Insert(“MyStudents”,students,null,DateTime.Now.AddMinutes(10),TimeSpan.Zero);
响应。写入(“从数据库获取”);
}
它只适用于单个用户或PC。如果我使用另一台PC浏览同一页面,它将在第一次加载时连接到数据库。但下次它会使用缓存。问题是它没有在不同会话之间共享缓存对象


你能告诉我哪里做错了吗?谢谢。

根据MSDN,您需要使用
缓存.NoSlidingExpiration
而不是
TimeSpan.Zero
来禁用滑动过期。

您是否在第一次点击后的10分钟内从另一台PC或浏览器点击?缓存与PC或浏览器毫无关系。它不是会话,应该在会话到期之前相互共享。您的缓存密钥与代码中显示的相同。是的,我使用的是相同的缓存密钥。我用我的电脑浏览了这一页。然后我用我的备用电脑在一分钟内浏览了同一页。根据理论,缓存应该在同一个应用程序中共享。这很奇怪,我不知道为什么。