การแก้ไขปัญหาข้อผิดพลาดการกำหนดค่าการอ้างอิง NULL ของ Enterprise Library CacheFactory.GetCacheManager
เมื่ออัปเกรดแอปพลิเคชันจากเวอร์ชันเก่าของเฟรมเวิร์กซอฟต์แวร์ นักพัฒนามักพบปัญหาการกำหนดค่าที่อาจทำให้เกิดข้อผิดพลาดที่น่าหงุดหงิด เช่น ข้อยกเว้นการอ้างอิง NULL หนึ่งในสถานการณ์ที่พบได้บ่อยเกิดขึ้นขณะย้ายจากเวอร์ชัน 1.1 ไปยัง 2.0 ของ Enterprise Library Caching block
หากคุณประสบปัญหาการอ้างอิง NULL เมื่อเรียกใช้ CacheFactory.GetCacheManager
คุณไม่ได้อยู่คนเดียว มาสำรวจปัญหาที่อยู่เบื้องหลังและวิธีการที่มีประสิทธิภาพในการแก้ไขปัญหาการกำหนดค่าเหล่านี้กัน
การทำความเข้าใจกับปัญหา
อย่างที่คุณอาจทราบแล้ว การเปลี่ยนผ่านจาก Enterprise Library 1.1
เป็น 2.0
มีการเปลี่ยนแปลงที่สำคัญในวิธีการจัดการการกำหนดค่า ในเวอร์ชันก่อนหน้านี้ การกำหนดค่ามักจัดการผ่าน ConfigurationManagerSectionHandler
แต่แนวทางนี้ได้กลายเป็นสิ่งล้าสมัยและเปลี่ยนเป็นกลไกการกำหนดค่าที่มีอยู่ใน .NET 2.0
ที่มีความเรียบง่ายมากขึ้น
ปัญหาเฉพาะ
ในกรณีของคุณ ปัญหาดูเหมือนจะเกิดจากการแบ่งการกำหนดค่าไปยังไฟล์ต่าง ๆ การเปลี่ยนแปลงนี้อาจทำให้แกนของ .NET ไม่สามารถค้นหาการตั้งค่าการกำหนดค่าที่จำเป็นได้ ทำให้เกิดข้อยกเว้นการอ้างอิง NULL เมื่อพยายามเข้าถึงผู้จัดการแคช
แนวทางแก้ไข: การกำหนดค่า CacheManager ด้วยไฟล์การกำหนดค่าภายนอก
ข่าวดี! การตั้งค่าบล็อกการแคชของ Enterprise Library
ด้วยไฟล์การกำหนดค่าภายนอกนั้นค่อนข้างตรงไปตรงมาหลังจากที่คุณเข้าใจไวยากรณ์ที่จำเป็น นี่คือวิธีการแบบทีละขั้นตอนที่จะช่วยให้คุณตั้งค่าการกำหนดค่าได้อย่างถูกต้อง
ขั้นตอนที่ 1: แก้ไขไฟล์ Web.config
ของคุณ
เริ่มต้น คุณจะต้องระบุแหล่งข้อมูลการกำหนดค่าภายนอกในไฟล์ Web.config
หลักของคุณ นี่คือวิธีการ:
<cachingConfiguration configSource="cachingconfiguration.config" />
ขั้นตอนที่ 2: สร้างไฟล์การกำหนดค่าภายนอก
ถัดไป คุณจะสร้างไฟล์การกำหนดค่าภายนอกชื่อ cachingconfiguration.config
นี่คือตัวอย่างโครงสร้างที่คุณสามารถใช้:
<?xml version="1.0" encoding="utf-8"?>
<cachingConfiguration defaultCacheManager="Default Cache Manager">
<backingStores>
<add name="inMemory" type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching" />
</backingStores>
<cacheManagers>
<add name="Default Cache Manager" expirationPollFrequencyInSeconds="60" maximumElementsInCacheBeforeScavenging="50" numberToRemoveWhenScavenging="10" backingStoreName="inMemory" />
</cacheManagers>
</cachingConfiguration>
ขั้นตอนที่ 3: ตรวจสอบการกำหนดค่าของคุณ
-
ตรวจสอบการอ้างอิงไฟล์: ให้ตรวจสอบว่า
cachingconfiguration.config
ถูกอ้างถึงอย่างถูกต้องในโปรเจ็กต์ของคุณและถูกวางไว้ในไดเรกทอรีหรือโฟลเดอร์ที่แอปพลิเคชันของคุณสามารถเข้าถึงได้ -
ทดสอบแอปพลิเคชัน: หลังจากทำการแก้ไขแล้ว ให้เรียกใช้แอปพลิเคชันของคุณอีกครั้งเพื่อตรวจสอบว่าข้อผิดพลาดการอ้างอิง NULL ยังคงมีอยู่หรือไม่ อำนวยความสะดวกในการตั้งค่าความอนุญาตที่จำเป็นหากไฟล์ถูกเก็บไว้ข้างนอกไดเรกทอรีแอปพลิเคชัน
ขั้นตอนที่ 4: แก้ไขปัญหาต่อหากจำเป็น
หากคุณยังพบปัญหา:
- ตรวจสอบความถูกต้องตามหลักไวยากรณ์ XML ในไฟล์การกำหนดค่าของคุณอย่างละเอียด
- มองหาคำพ้องในชื่อของผู้จัดการแคชและแบ็คกิ้งสโตร์ของคุณ
- อ้างอิงเอกสาร ต้นฉบับ เพื่อให้แน่ใจว่าการกำหนดค่าที่จำเป็นทั้งหมดถูกตั้งค่า
สรุป
การแปลการกำหนดค่าจาก Enterprise Library 1.1
ไปยัง 2.0
อาจดูน่ากลัว แต่ด้วยขั้นตอนที่ชัดเจนเหล่านี้ คุณควรจะหลีกเลี่ยงหลุมพรางทั่วไปและแก้ไขข้อยกเว้นการอ้างอิง NULL ที่อาจเกิดขึ้นในแอปพลิเคชันของคุณได้ จำไว้ว่ากุญแจสู่การย้ายที่สำเร็จคือการตรวจสอบให้แน่ใจว่าไฟล์การกำหนดค่าของคุณถูกตั้งค่าอย่างถูกต้องและถูกอ้างอิงอย่างเหมาะสม
อย่าลังเลที่จะแบ่งปันคำแนะนำนี้กับนักพัฒนาคนอื่น ๆ ที่อาจเผชิญกับความท้าทายที่คล้ายกัน และหลีกเลี่ยงความปวดหัวจากข้อผิดพลาดการอ้างอิง NULL!