ไฟล์ Web.Config ทำอะไรในโฟลเดอร์มุมมองของโครงการ MVC


86

ฉันมีปัญหาในการปรับใช้แอปพลิเคชันของฉันและในขณะที่แก้ไขปัญหาฉันเจอWeb.Configไฟล์ในViewsโฟลเดอร์ ในความพยายามที่จะ จำกัด ความเป็นไปได้ของแหล่งที่มาของปัญหาของฉันฉันพยายามค้นหาจุดประสงค์ของไฟล์ ~ Web.Config` นั้น แต่ไม่สามารถหาข้อมูลได้มากนัก

โดยพื้นฐานแล้วคำถามของฉันคือ:

  1. อะไรWeb.configไฟล์ทำในViewsโฟลเดอร์ของโครงการ MVC?
  2. จำเป็นไหม

ในเว็บฟอร์ม Asp.Net ฉันเชื่อว่าหากต้องการใช้ไฟล์ web.config แยกต่างหากในโฟลเดอร์โฟลเดอร์นั้นจะต้องตั้งค่าเป็นโฟลเดอร์เสมือนใน IIS กรณีนี้ใน MVC หรือไม่ (เช่นViewsโฟลเดอร์ต้องกำหนดค่าเป็นโฟลเดอร์เสมือน)


16
ไม่มีคำถาม "โง่"
contactmatt

9
อย่ากลัวที่จะถามคำถาม "โง่" ถ้าคุณไม่ทราบคำตอบแสดงว่ามันไม่ "โง่" ไม่มีอะไร "โง่" ในการทำความเข้าใจบางสิ่งให้ดีขึ้น
DazManCat

5
SO เป็นที่รู้จักสำหรับผู้ใช้ dousing ใน napalm สำหรับการถามคำถาม ...
Pangamma

คำตอบ:


79

ไม่คุณไม่จำเป็นต้องกำหนดค่าโฟลเดอร์เสมือนเนื่องจากไฟล์ web.config พิเศษนี้

ไฟล์ web.config อยู่ในโฟลเดอร์ Views เพื่อป้องกันการเข้าถึงมุมมองของคุณด้วยวิธีการอื่นที่ไม่ใช่ตัวควบคุมของคุณ ในรูปแบบการออกแบบ MVC ตัวควบคุมควรกำหนดเส้นทางการร้องขอและส่งคืนมุมมองที่แสดงผลไปยังไคลเอนต์ที่เรียก

กล่าวอีกนัยหนึ่งมุมมองของคุณที่ www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx ไม่ควรเข้าถึงได้โดยตรง

หากคุณดูไฟล์ web.config จริงมันจะลงทะเบียนHttpNotFoundHandlerกับพา ธ และกริยาทั้งหมด:

<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>

หรือใน IIS 7 อาจมีลักษณะดังนี้

<add name="BlockViewHandler" path="*.aspx" verb="*" 
    preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>

21
แต่ web.config ที่สร้างขึ้นมีข้อความอื่น ๆ จำนวนมาก - มันซ้ำซ้อนทั้งหมดหรือ
Eamon Nerbonne


7

ไฟล์ web.config ในโฟลเดอร์มุมมองคือการตั้งค่าพิเศษบางอย่างที่คุณต้องการใช้กับเพจภายในโฟลเดอร์มุมมอง

เช่นเดียวกับการตั้งค่าการกำหนดค่าเช่นสตริงการเชื่อมต่อ / appsettings เป็นต้น

แต่จะใช้ได้กับโฟลเดอร์นั้นเท่านั้นและส่วนที่เหลือของโปรเจ็กต์จะรับการตั้งค่าจาก web.config ที่รูท

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


6

นั่นคือถ้าคุณต้องการแทนที่บางสิ่งที่กล่าวถึงในด้านบนweb.configกล่าวคือถ้าคุณต้องการปรับแต่งบางสิ่งภายในขอบเขตของViewsโฟลเดอร์

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