ASP.NET web.config: configSource กับแอตทริบิวต์ของไฟล์


187

ภายในweb.configแฟ้ม: ใน ASP.NET แอพลิเคชันบางส่วนของการตั้งค่าเช่นappSettingsและconnectionStringsสนับสนุนคุณลักษณะและfileconfigSource

อะไรคือความแตกต่างระหว่างการใช้file-attribute และconfigSource-attribute? เมื่อใดที่คุณควรใช้แอตทริบิวต์ใดและคุณสามารถใช้ทั้งสอง

<?xml version="1.0"?>
<configuration>
  <appSettings file="AppSettings.config">
  </appSettings>
  <connectionStrings configSource="ConnectionStrings.config">      
  </connectionStrings>
  <!-- ... -->
</configuration>

คำตอบ:


300

file คุณลักษณะ

  • ระบุพา ธ สัมพัทธ์ไปยังไฟล์ภายนอกที่มีการตั้งค่าแอปพลิเคชันที่กำหนดเอง
  • เฉพาะappSettingsส่วน
  • จะรวมการตั้งค่า (และแทนที่) ในไฟล์. config
  • จะไม่ทำให้เว็บแอปพลิเคชันรีสตาร์ทเมื่อแก้ไขไฟล์ที่ระบุ
  • http://msdn.microsoft.com/en-US/library/ms228154(v=vs.100).aspx
  • การใช้การกำหนดค่า AppSettings การตั้งค่า เพิ่ม API จะส่งผลให้การตั้งค่าทั้งหมดจะถูกรวมกลับเข้าไป.configในการตั้งค่าหลัก บันทึกการโทร
  • ตั้งแต่. NET 1.1
  • ข้อยกเว้นจะไม่ส่งออกหากไม่มีไฟล์อยู่

configSource คุณลักษณะ

fileแอตทริบิวต์ระบุแฟ้มภายนอกที่มีการตั้งค่าที่กำหนดเองเช่นที่คุณทำในรายการ appSettings ของแฟ้ม web.config ในขณะเดียวกันไฟล์ภายนอกที่ระบุในconfigSourceแอ็ตทริบิวต์มีการตั้งค่าสำหรับส่วนที่คุณประกาศ configSource ตัวอย่างเช่นหากคุณใช้แอconfigSourceททริบิวของส่วนหน้าไฟล์ภายนอกจะมีการตั้งค่าสำหรับส่วนของหน้า

การตั้งค่าแบบกำหนดเองที่ประกาศในการกำหนดค่าภายนอกที่ระบุในแอ fileททริบิวจะถูกรวมเข้ากับการตั้งค่าในappSettings ส่วนของweb.configไฟล์ ในขณะเดียวกันที่configSource ไม่ได้สนับสนุนการควบรวมก็หมายความว่าคุณจะต้องย้ายการตั้งค่าส่วนทั้งหมดลงในแฟ้มภายนอก

http://www.codeproject.com/Messages/1463547/Re-difference-between-configSource-and-file-attrib.aspx


10
นอกจากนี้แอตทริบิวต์ "ไฟล์" ช่วยให้คุณสามารถระบุไฟล์ที่อยู่นอกแผนผังไดเรกทอรีได้ทันทีซึ่งเป็นสิ่งสำคัญสำหรับการแบ่งปันการตั้งค่าทั่วไปในไซต์ต่างๆ น่าเสียดายที่แอตทริบิวต์ "configsource" จำกัด คุณไว้ที่ไฟล์ภายในแผนผังต้นไม้ดังนั้นสำหรับการตั้งค่าที่ใช้ร่วมกันคุณต้องระบุไดเรกทอรีเสมือนใน IIS
Ed Graham

6
ความคิดเห็นด้านบนของฉันไม่ถูกต้องทั้งหมดและดูเหมือนว่าฉันพลาดช่วงเวลาห้านาทีในการแก้ไข! คุณไม่สามารถตั้งค่าไดเรกทอรีเสมือนใน IIS เพื่ออนุญาตให้ไฟล์ "configsource" อยู่นอกโครงสร้างไดเรกทอรีทันที ดังนั้นมันจึงค่อนข้าง จำกัด ฉันจะแก้ไขได้โดยใช้จุดเชื่อมต่อ (หรือ NTFS ลิงก์ยาก) แต่ก็ไม่ได้ว่าสวย ...
เอ็ดเกรแฮม

1
WAO! คำตอบที่ดี ... สิ่งนี้ช่วยฉันได้จริงๆ: will not cause web application to restart when modifying the specified file. ฉันจะต้อง app ที่จะเริ่มต้นใหม่เมื่อการปรับเปลี่ยนการตั้งค่าใด ๆ ในแฟ้มภายนอกสำหรับส่วนที่กำหนดเองและอื่น ๆ configSourceวิธีที่จะไปอยู่กับ ที่น่าสนใจคือฉันใช้fileและส่วนต่าง ๆ ได้ทำงาน fileยังใช้ได้กับส่วนอื่นที่ไม่ใช่appSettingsแต่มีคำอธิบายที่ได้รับอย่างดีในคำตอบ
Leniel Maccaferri

4
ฉันต้องการที่จะเพิ่มในรายการ configSource It must refer to a file in the same directory or in a subdirectory as the configuration file.นี้: It can reside outside the directory of the configuration file itself.และยังรายการแฟ้ม:
frankhommers

2
ลิงก์ที่อัปเดตสำหรับองค์ประกอบการตั้งค่าแอป - docs.microsoft.com/en-us/dotnet/framework/configure-apps/…
Jarrod
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.