[英]How to cache in ASP.NET?
我有一些常用的數據,我想在我的global.asax文件中的Application_Start
期間從我的數據庫和緩存加載。 我一直在閱讀MSDN關於緩存的文章 ,但我對正確的方法有點困惑。
他們將數據插入緩存的示例如下:
Cache.Insert("CacheItem2", "Cached Item 2");
所以我在global.asax中添加了以下內容:
using System.Web.Caching;
...
Cache.Insert("audioVariables", audioVariables);
但是拋出,需要An object reference is required....
好的,很好 - 所以我在Application_start
創建了一個Cache類的實例:
Cache c = new Cache();
c.Insert("audioVariables", audioVariables);
當我調用Insert
它會拋出An unhandled exception of type 'System.NullReferenceException' occurred in System.Web.dll
錯誤中An unhandled exception of type 'System.NullReferenceException' occurred in System.Web.dll
。
在Application_Start
上將對象插入緩存的正確方法是什么?
更新:
堆棧跟蹤 -
[NullReferenceException:對象引用未設置為對象的實例。] System.Web.Caching.Cache.Insert(String key,Object value)+66 MyVerbalInk.MvcApplication.Application_Start()in c:\\ inetpub \\ VerbalInk2.0 \\ MyVerbalInk \\的Global.asax.cs:26
[HttpException(0x80004005):對象引用未設置為對象的實例。]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context,HttpApplication app)+9935033
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext context,MethodInfo [] handlers)+118
System.Web.HttpApplication.InitSpecial(HttpApplicationState狀態,MethodInfo []處理程序,IntPtr appContext,HttpContext上下文)+172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext context)+336
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+296[HttpException(0x80004005):對象引用未設置為對象的實例。] System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+9913572
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)+254
您可能希望閱讀本文:
但是,問題的要點是在集成模式下運行的II7或更高版本中,Application_Start()中沒有可用的HttpContext。 你必須使用`HttpRuntime.Cache.Insert()'而不是Cache,或者HttpContext.Current.Cache
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.