WebConfigurationManager และ ConfigurationManager แตกต่างกันอย่างไร


102

อะไรคือความแตกต่างระหว่างWebConfigurationManagerและConfigurationManagerอะไร?

ฉันควรใช้เมื่อใด

ปรับปรุง

ฉันเพิ่งดูWebConfigurationManagerและด้วยเหตุผลบางประการคุณไม่สามารถเข้าถึงสตริงการเชื่อมต่อได้เหมือนที่คุณทำในConfigurationManager(เช่นอาร์เรย์) ใครช่วยบอกทีว่าทำไม MS ถึงทำแบบนี้? ดูเหมือนจะเป็นความเจ็บปวดในการรับสตริงการเชื่อมต่อที่คุณต้องการโดยใช้ไฟล์WebConfigurationManager.

อัปเดตอีกครั้งด้วย CAVEAT!

หากคุณไม่มีการอ้างอิงถึงSystem.Configurationเนมสเปซที่เพิ่มในโปรเจ็กต์ของคุณ Visual Studio จะแสดงข้อผิดพลาดเมื่อคุณพยายามและเข้าถึงWebConfigurationManager.ConnectionStringsอาร์เรย์ที่คล้ายกัน!


1
ฉันไม่คิดว่า "ข้อแม้" จะแม่นยำมาก ฉันใช้ system.web.configuration สำหรับสตริงการเชื่อมต่อโดยไม่ต้องใช้ system.configuration
sclarson

คำตอบ:


95

WebConfigurationManger รู้วิธีจัดการกับการสืบทอดการกำหนดค่าภายในเว็บแอปพลิเคชัน ดังที่คุณทราบอาจมีไฟล์ web.config หลายไฟล์ในหนึ่งแอปพลิเคชัน - หนึ่งไฟล์ในรูทของไซต์และหมายเลขใดก็ได้ในไดเร็กทอรีย่อย คุณสามารถส่งพา ธ ไปยังเมธอด GetSection () เพื่อรับการกำหนดค่าที่ลบล้างได้

หากเราไปที่ WebConfigurationManager พร้อม Reflector สิ่งต่างๆก็ชัดเจน:

public static object GetSection(string sectionName)
{
    ...
    return ConfigurationManager.GetSection(sectionName);
}

public static object GetSection(string sectionName, string path)
{
    ...
    return HttpConfigurationSystem.GetSection(sectionName, path);
}

25

WebConfigurationManager สร้างขึ้นโดยเฉพาะสำหรับแอปพลิเคชัน ASP.NET

WebConfigurationManager มีวิธีการเพิ่มเติมในการโหลดไฟล์คอนฟิกูเรชันที่ใช้กับเว็บแอ็พพลิเคชัน

ConfigurationManager ยังมีวิธีการโหลดไฟล์การกำหนดค่าที่ใช้กับแอปพลิเคชัน ".exe"

ฉันขอแนะนำให้ดูที่ WebConfigurationManager และดูว่ามีสิ่งใดที่คุณไม่สามารถทำได้ด้วย ConfigurationManager หรือไม่และใช้แทนมิฉะนั้นการใช้ ConfigurationManager จะทำให้โค้ดของคุณใช้งานได้อย่างราบรื่นระหว่าง aps บนเว็บและเดสก์ท็อป


4

แม้ว่า WebConfigurationManager จะอยู่ใน System.Web แอสเซมบลี ConnectionStringSettingsCollection ที่ส่งคืนจะอยู่ใน System.Configuration

หากคุณได้รับข้อผิดพลาด

ไม่สามารถใช้การสร้างดัชนีด้วย [] กับนิพจน์ประเภท 'System.Configuration.ConnectionStringSettingsCollection'

ขณะพยายามเข้าถึงดัชนีอาร์เรย์ ...

WebConfigurationManager.ConnectionStrings["Name"].ConnectionString

ตรวจสอบให้แน่ใจว่าคุณมีการอ้างอิงถึง Assembly System.Configuration


3

ไม่แน่ใจว่าคุณหมายถึงอะไรเกี่ยวกับสตริงการเชื่อมต่อ

โทร WebConfigurationManager.ConnectionStringsส่งกลับ System.Configuration.ConnectionStringSettingsCollection ซึ่งเป็นเช่นเดียวกับที่คุณจะได้รับถ้าคุณเรียกว่าConfigurationManager.ConnectionStrings

มิฉะนั้นตามที่ XOR กล่าวไว้มันได้รับการออกแบบมาเพื่อจัดการ web.configs แบบลำดับชั้นหลาย ๆ รูปแบบโดยรวมเข้าด้วยกันตามต้องการเมื่อคุณย้ายไปรอบ ๆ โฟลเดอร์ในแอปพลิเคชัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.