ความแตกต่างระหว่าง <system.web> และ <system.webServer> หรือไม่


197

ทุกครั้งที่ผมต้องเพิ่มตัวจัดการหรือโมดูลสำหรับ ASP.NET กับ IIS7 คำแนะนำมักจะบอกให้ฉันไปรวมไว้ในสองส่วนและsystem.websystem.webserver

<system.web>
    <httpHandlers>
    </httpHandlers>
    <httpModules>
    </httpModules>
</system.web>

และนี่:

<system.webServer>
    <modules>
    </modules>
    <handlers>
    </handlers>
</system.webServer>

ความแตกต่างระหว่างสองส่วนนี้คืออะไร?

นอกจากนี้ถ้าฉันไม่เพิ่มลงในsystem.webส่วนดีบักเกอร์ Visual Studio 2008 ของฉันยังทำงานไม่ถูกต้อง


2
การอ้างอิงที่ดีกว่าในปัจจุบันสำหรับสิ่งนี้คือ: msdn.microsoft.com/en-us/library/46c5ddfy.aspx
Shannon

คำตอบ:


157

ส่วน system.web ใช้สำหรับการกำหนดค่า IIS 6.0 ในขณะที่รุ่น system.webserver ใช้เพื่อกำหนดค่า IIS 7.0 IIS 7.0 มีไปป์ไลน์ ASP.NET ใหม่และความแตกต่างของการกำหนดค่าบางส่วนดังนั้นส่วนกำหนดค่าเพิ่มเติม

อย่างไรก็ตาม ...

หากคุณใช้ IIS 7.0 ในโหมดรวมเท่านั้นคุณไม่จำเป็นต้องเพิ่มตัวจัดการลงในทั้งสองส่วน การเพิ่มไปยัง system.web และเป็นทางเลือกสำหรับ IIS 7.0 ที่ทำงานในโหมดคลาสสิคยกเว้นว่าฉันเข้าใจผิด ฉันไม่ได้ทำการทดสอบอย่างละเอียดเกี่ยวกับเรื่องนี้

ดูhttp://msdn.microsoft.com/en-us/library/bb763179.aspxสำหรับข้อมูลเพิ่มเติม


4
สิ่งที่เกี่ยวกับรายการเช่น <httpRuntime> ซึ่งอยู่ใน system.web แต่ยังคงสร้างความแตกต่างในโหมด IIS 7 Integrated
sclarson

39
ส่วน system.web ไม่ได้ถูกแทนที่โดยส่วน system.webserver ที่เพิ่งขยาย
คริส

ใน IIS 8.5 ฉันพบว่าการhttpCookiesตั้งค่าไม่สามารถใช้ได้ใน system.webServer แต่ทำงานได้ถ้าฉันสร้าง system.web และวางไว้ที่นั่น
Eborbob

44

อดีตคือโหมดคลาสสิก

โหมดหลังใช้สำหรับ Integrated Pipeline Mode (มีใน IIS7 +)


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