วิธีการกำหนด Custom Web.config Sections ใน ASP.NET
เมื่อพัฒนาแอปพลิเคชันเว็บ คุณมักจะพบกับสถานการณ์ที่คุณต้องจัดการการตั้งค่าคอนฟิกูเรชันที่อาจแตกต่างกันในแต่ละสภาพแวดล้อม ซึ่งการจัดการนี้จะซับซ้อนมากขึ้นเมื่อแอปพลิเคชันของคุณต้องการการตั้งค่าที่ขึ้นต่อกันที่ต้องเปลี่ยนพร้อมกัน วิธีการที่ดีในการแก้ปัญหานี้คือการกำหนด custom web.config
sections คู่มือนี้จะอธิบายวิธีการสร้าง sections ที่กำหนดเองเหล่านี้พร้อมกับแอตทริบิวต์และองค์ประกอบย่อยเพื่อการจัดการการตั้งค่าที่มีประสิทธิภาพ
การทำความเข้าใจ Custom Web.config Sections
โดยค่าเริ่มต้น แอปพลิเคชันเว็บจะใช้คีย์-ค่าแบบง่าย ๆ สำหรับการตั้งค่าคอนฟิกูเรชัน อย่างไรก็ตาม เมื่อแอปพลิเคชันของคุณเติบโต การรักษาความชัดเจนจะเป็นสิ่งสำคัญเมื่อค่าที่เกี่ยวข้องกันหรือเมื่อการตั้งค่าต้องเปลี่ยนต่อสภาพแวดล้อมต่าง ๆ Custom sections ช่วยให้คุณสามารถจัดกลุ่มการตั้งค่าที่เกี่ยวข้องกันได้ ทำให้การจัดการและความเข้าใจนั้นง่ายขึ้น
คู่มือขั้นตอนการสร้าง Custom Config Sections
1. กำหนดซีกคอนฟิกูเรชัน
ในการสร้างซีกคอนฟิกูเรชันที่กำหนดเอง คุณจะต้องกำหนดคลาสใหม่ในแอปพลิเคชัน ASP.NET ของคุณโดยใช้คลาสพื้นฐาน ConfigurationSection
ด้านล่างนี้เป็นตัวอย่างของซีกคอนฟิกูเรชันที่กำหนดขึ้นซึ่งกำหนดพื้นที่ดิสก์ของผู้ใช้ที่อนุญาตในแอปพลิเคชันของคุณ
ตัวอย่าง: MailCenterConfiguration.cs
namespace Ani {
public sealed class MailCenterConfiguration : ConfigurationSection {
[ConfigurationProperty("userDiskSpace", IsRequired = true)]
[IntegerValidator(MinValue = 0, MaxValue = 1000000)]
public int UserDiskSpace {
get { return (int)base["userDiskSpace"]; }
set { base["userDiskSpace"] = value; }
}
}
}
อัปเดต Web.config
คุณยังต้องลงทะเบียนซีกคอนฟิกูเรชันที่กำหนดเองของคุณใน web.config
ตามที่แสดงด้านล่าง:
<configSections>
<!-- ไฟล์คอนฟิกูเรชัน Mailcenter -->
<section name="mailCenter" type="Ani.MailCenterConfiguration" requirePermission="false"/>
</configSections>
...
<mailCenter userDiskSpace="25000">
<mail host="my.hostname.com" port="366" />
</mailCenter>
2. ดำเนินการกับองค์ประกอบย่อย
บ่อยครั้งที่จำเป็นต้องกำหนดองค์ประกอบย่อยภายในซีกคอนฟิกูเรชันที่กำหนดเองของคุณ สำหรับตัวอย่างแล้ว องค์ประกอบ mail
สามารถกำหนดแยกออกมาได้ ซึ่งรวมถึงคุณสมบัติพิเศษต่าง ๆ ที่เกี่ยวข้องกับการตั้งค่าจดหมาย
ปรับปรุง MailCenterConfiguration.cs
เพิ่มคลาสน้องสาว MailElement
เพื่อจัดการการตั้งค่าที่เฉพาะเจาะจงกับจดหมาย:
public sealed class MailCenterConfiguration : ConfigurationSection {
[ConfigurationProperty("mail", IsRequired = true)]
public MailElement Mail {
get { return (MailElement)base["mail"]; }
set { base["mail"] = value; }
}
public class MailElement : ConfigurationElement {
[ConfigurationProperty("host", IsRequired = true)]
public string Host {
get { return (string)base["host"]; }
set { base["host"] = value; }
}
[ConfigurationProperty("port", IsRequired = true)]
[IntegerValidator(MinValue = 0, MaxValue = 65535)]
public int Port {
get { return (int)base["port"]; }
set { base["port"] = value; }
}
}
}
3. การเข้าถึงค่าของการตั้งค่า
เมื่อซีกคอนฟิกูเรชันของคุณถูกตั้งค่าแล้ว การดึงค่ามาใช้ในแอปพลิเคชันของคุณก็เป็นเรื่องง่าย คุณสามารถสร้างอินสแตนซ์ของอ็อบเจ็กต์คอนฟิกูเรชันซึ่งจะอ่านค่าจาก web.config
โดยอัตโนมัติ
ตัวอย่างโค้ดการดึง
นี่คือวิธีการเข้าถึงคุณสมบัติของ MailCenterConfiguration
:
private static MailCenterConfiguration instance = null;
public static MailCenterConfiguration Instance {
get {
if (instance == null) {
instance = (MailCenterConfiguration)WebConfigurationManager.GetSection("mailCenter");
}
return instance;
}
}
4. การตรวจสอบความถูกต้อง
เพื่อให้แน่ใจว่าแอปพลิเคชันของคุณเริ่มต้นโดยไม่มีปัญหาอันเกิดจากข้อมูลคอนฟิกูเรชันที่ไม่ถูกต้อง คุณควรโหลดคอนฟิกูเรชันของคุณในระยะเริ่มต้นของแอปพลิเคชัน ด้วยวิธีนี้ ทันทีที่เกิดข้อผิดพลาดในการตรวจสอบความถูกต้องของการคอนฟิกูเรชัน คุณจะเห็นข้อยกเว้นแทนที่จะเกิดข้อผิดพลาดในช่วงการทำงานภายหลัง
ตัวอย่าง Global.asax
protected void Application_Start(object sender, EventArgs e) {
MailCenterConfiguration.Instance;
}
สรุป
การกำหนดซีก web.config
ที่กำหนดเองในแอปพลิเคชัน ASP.NET ของคุณสามารถปรับปรุงการจัดการการคอนฟิกูเรชันของคุณได้อย่างมากโดยการอนุญาตให้คุณจัดกลุ่มการตั้งค้าที่เกี่ยวข้องกัน เพิ่มข้อจำกัด และทำให้ความชัดเจนระหว่างสภาพแวดล้อมต่าง ๆ คุณสามารถสร้างวิธีการที่มีโครงสร้างและแข็งแกร่งในการคอนฟิกูเรชันซึ่งสามารถขยายตัวได้ตามความซับซ้อน
ไม่ว่าจะเป็นการจัดการพื้นที่ดิสก์หรือการตั้งค่าที่ขึ้นต่อกันอื่น ๆ การใช้ซีกคอนฟิกูเรชันที่กำหนดเองจะตอบสนองความต้องการของแอปพลิเคชันของคุณได้ดียิ่งขึ้น