لماذا هو بلدي ASP.Net التخزين المؤقت رمي ​​استثناء؟

StackOverflow https://stackoverflow.com/questions/558864

سؤال

لدي مجموعة من طاولات البحث البسيطة المخزئة مؤقتا في تطبيق ASP.NET الخاص بي لأن البيانات المصدر موجودة على خادم منفصل من بنية الويب الرئيسية الخاصة بنا وتغيره بشكل غير منتظم. لقد كنت أتابع إجابات هنا والوثائق المختلفة ولدي دالة التحميل الأولية الخاصة بي اتصل بما يلي:

HttpContext.Current.Cache.Insert("CheckLocations", GetAllCheckLocations(), _
                                 Nothing, DateAdd(DateInterval.Day, 1, Now()), _
                                 System.Web.Caching.Cache.NoSlidingExpiration, _
                                 CacheItemPriority.Normal, _
                                 New CacheItemRemovedCallback(AddressOf CheckLocationsExpired))

للحصول على رد ذاكرة التخزين المؤقت الخاصة بي، لدي التعليمات البرمجية التالية.

Public Shared Sub CheckLocationsExpired(ByVal key As String, ByVal value As Object, ByVal reason As CacheItemRemovedReason)

   Dim dtCheckLocation As New ReferenceSchema.CheckLocationDataTable
   dtCheckLocation = GetAllCheckLocations()

   HttpContext.Current.Cache.Insert("CheckLocations", dtCheckLocation, Nothing, _
                                    DateAdd(DateInterval.Day, 1, Now()), _
                                    System.Web.Caching.Cache.NoSlidingExpiration, _
                                    CacheItemPriority.Normal, _
                                    New CacheItemRemovedCallback(AddressOf CheckLocationsExpired))

End Sub

بالنسبة للسجل، تستدعي طريقة GetallcheckLocations ببساطة خدمة ويب ويوزع النتائج في جدول البيانات الذي يتم تخزينه.

الآن عندما أحصل على طلب الاختبار المحلي، ما زال كل شيء يعمل بشكل جيد، لكنني أجد رسالة الاستثناء التالية في ملف السجل الخاص بي:

System.NullReferenceException: لم يتم تعيين مرجع الكائن إلى مثيل كائن. في eaf.Cachemethods.checklocationSexpired (مفتاح السلسلة، قيمة الكائن، سبب CacheItemremovedReason) في C: Projects Hr Hr Hr 2.0 Dal Cachemethods.vb: Line 434 في system.web.caching.callcacheitemremovedcallback (cacheitemrimovedcallback السبب)

أدت إلى التحقق من أن البيانات موجودة بالفعل وتحديثا، ولا شيء في وسيطات الأوامر يبدو خارج المكان عندما أذهب إلى الأخطاء.

هل يعرف أي شخص ما أفتقده هنا؟ هل هذا آخر من "الفروق الدقيقة" مثل مشكلة Reponse.redirect حيث إنهاء المعالجة التي يلقي بها تقنيا استثناء إحباط الموضوع؟

هل كانت مفيدة؟

المحلول

هل لا يزال استثناء عندما لا تعطيه وظيفة رد الاتصال؟ يبدو أن الوظيفة المفوضة تواجه مشكلات مع أشياء فارغة.

نصائح أخرى

قد ترغب في استخدام httpruntime.cache. في حين أن. من الممكن أن HTTPCONTEXT.CURRENT NULL إذا كنت تتصل به من اختبار الوحدة أو من هذا القبيل.

فكرتي الأولية هي أن GetallcheckLocations رمي الاستثناء أو إرجاع NULL.

ربما تسمي هذه الطريقة AJAXPro أو شيء ما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top