2010-03-28 8 views
5

एएसपीनेट एमवीसी 2 में, मैं routes.RouteExistingFiles = true; का उपयोग कर सिस्टम सिस्टम के माध्यम से सभी अनुरोध भेजने के लिए कर सकता हूं, भले ही वे फ़ाइल सिस्टम पर मौजूद हों।मौजूदा फ़ाइलों तक पहुंच को अवरुद्ध करने के लिए रूटएक्सस्टिंगफाइल का उपयोग करना, भले ही कोई मार्ग मौजूद न हो,

आमतौर पर, यह "{controller}/{action}/{id}" मार्ग पर टक्कर मारता है और नियंत्रक को नहीं मिला क्योंकि अपवाद फेंकता है।

मैं उस मार्ग का उपयोग नहीं करना चाहता हूं (मेरे पास केवल कुछ यूआरएल हैं और वे विशेष रूप से मैप किए गए हैं), फिर भी मैं फाइल सिस्टम तक पहुंच को रोकना चाहता हूं।

असल में मैं IgnoreRoute का उपयोग करके व्हाइटलिस्ट पृष्ठों को चाहता हूं। क्या ऐसा करने का एक अंतर्निहित तरीका है?

मेरा वर्तमान दृष्टिकोण अभी भी "{*anything}" मार्ग है और यह 404 उत्पन्न होने पर उत्पन्न होता है, लेकिन मैं सोच रहा हूं कि कुछ पहले से निर्मित है या नहीं?

उत्तर

7

यह एएसपी.नेट एमवीसी अनुप्रयोग में Web.config प्रमाणीकरण के कुछ मान्य उपयोगों में से एक है। :)

मैं रूटएक्सस्टिंगफाइल को गलत पर सेट करने की अनुशंसा करता हूं (ताकि रूटिंग और एमवीसी पाइपलाइन इन अनुरोधों को संभाल न सके, आईआईएस और एएसपी.नेट कोर करते हैं)। फ़ाइलों जिसके लिए आप एक ही फ़ोल्डर में पहुंचने से रोका जाता की जाने वाली समस्त रखो, तो उस फ़ोल्डर में कोई Web.config ड्रॉप:

<configuration> 
    <system.web> 
    <authorization> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</configuration> 

यह इन फ़ाइलों को सीधे प्रस्तुत किए जाने से आईआईएस और ASP.NET कर पाएगा।

+0

वेब फॉर्म एप्लिकेशन में, "checkPhysicalUrlAccess" पैरामीटर गलत होना चाहिए। उदाहरण के लिए: routes.MapPageRoute ("के बारे में", "के बारे में", "~/वेब/पेज/about.aspx", झूठा) अन्यथा, बहुत अच्छा काम करता है! ("वेब" निर्देशिका में उपरोक्त के रूप में सटीक Web.config।) – leqid

संबंधित मुद्दे

 संबंधित मुद्दे