2013-03-13 5 views
13

में एक मार्ग को अनदेखा करना मैं ASP.NET MVC में रूटिंग के साथ काम करना सीख रहा हूं और IgnoreRoute विधि को समझने की कोशिश कर रहा हूं।एएसपी.नेट एमवीसी

मैं उपयोगकर्ताओं को "Content/{filename}.html" तक पहुंचने से रोकने की कोशिश कर रहा हूं। मैंने इसे अपने RegisterRoutes विधि में पहली कॉल के रूप में रखा है। यहाँ मेरी कोड है:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("Content/{filename}.html"); 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 


    routes.MapRoute("MyRoute", "{controller}/{action}/{id}/{*catchall}", 
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
        new { controller = "^.*", action = "^Index$|^About$" }, 
        new[] { "UrlsAndRoutes.AditionalControllers" }); 
    routes.MapRoute("MyRoute2", "{controller}/{action}/{id}/{*catchall}", 
        new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
        new { controller = "^.*", action = "^Index$|^About$" }, 
        new[] { "UrlsAndRoutes.Controllers" }); 
    routes.MapRoute("ShopSchema2", "Shop/OldAction", new { controller = "Home", action = "Index" }); 
    routes.MapRoute("ShopSchema", "Shop/{action}", new { controller = "Home" }); 
    routes.MapRoute("", "X{controller}/{action}"); 

    routes.MapRoute(
     name: "", 
     url: "{controller}/{action}", 
     defaults: new { controller = "Home", action = "Index" } 
    ); 
} 

अगर मैं स्थानीय होस्ट की तरह एक लिंक तक पहुँचने का प्रयास: 53,907/सामग्री/Static.html, यह मेरे मैं अब तक क्या समझ से फ़ाइल प्रदर्शित करने की अनुमति नहीं होना चाहिए, लेकिन यह प्रदर्शन करता है यह।

मैं क्या गलत कर रहा हूं?

+0

और समस्या क्या है? –

+0

क्या आपने कोशिश की है? routes.IgnoreRoute ("सामग्री/{* pathInfo} .html"); – Jon

+0

यदि मैं इस तरह के लिंक को प्राप्त करने का प्रयास करता हूं: http: // localhost: 53907/content/Static.html इसे मुझे अब तक जो समझ में आता है उससे फ़ाइल प्रदर्शित करने की अनुमति नहीं देनी चाहिए, लेकिन यह कोशिश करने के बाद इसे – aleczandru

उत्तर

16

एमवीसी में मार्गों को अनदेखा करने से एमवीसी ढांचे को उन यूआरएल को न लेने के लिए कहा जाएगा।

इसका मतलब है कि यह अंतर्निहित एएसपी.NET अनुरोध को संभाल देगा, जो आपको खुशी से एक स्थिर फ़ाइल दिखाएगा।

+0

इसलिए दूसरे शब्दों में यह केवल तभी काम करेगा जब कोई उपयोगकर्ता उस लिंक पर क्लिक करता है जो उसे सामग्री/{filename} .html पर निर्देशित करता है, लेकिन यदि वह स्वयं लिंक को टाइप करता है तो उसे एक्सेस होगा। क्या मैं इस मूल रूप से उलझन में हूं? – aleczandru

+0

@aleczandru नहीं, आप क्या कह रहे हैं कि अगर कोई यूआरएल सामग्री/{filename} .html किसी भी फ़ाइल के साथ हिट करता है, तो मार्ग को अनदेखा करें, लेकिन इसे अनदेखा करके, आप उसे एएसपी.NET को संभालने के लिए पास कर रहे हैं और यह है बिना यूआरएल पर आपको रूट करने जा रहा है। – mattytommo

+0

ठीक है धन्यवाद अब मैं – aleczandru

1

यदि आप वास्तव में उस फ़ोल्डर तक पहुंच को अवरुद्ध करना चाहते हैं, तो इसे web.config में क्यों परिभाषित नहीं करें?

उस फ़ोल्डर में web.config रखें।

सामग्री होना चाहिए:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.web> 
     <authorization> 
      <!-- <allow roles="admin" /> --> //In case you want to give access to admin only. 
      <deny users ="*" /> 
     </authorization> 
    </system.web> 
</configuration> 
+1

यह फ़ोल्डर तक पहुंच को अवरुद्ध करने के बारे में नहीं है, लेकिन यह समझने के बारे में कि रूटिंग कैसे काम करती है, मुझे पता है कि मैं वेब.कॉन्फिग को एक्सेस कर सकता हूं, लेकिन उत्तर के लिए धन्यवाद – aleczandru

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