2013-05-20 11 views
11

मैं एमवीसी में अनुरोध जीवन चक्र के बारे में पढ़ रहा था। मैं नीचे की रेखा को समझने में फंस गया।एएसपी.नेट एमवीसी - UrlRoutingModule क्या है?

UrlRoutingModule अवरोध अनुरोध

क्वेरी - UrlRoutingModule क्या है?

मैं गूगल पर एक बहुत खोज की, लेकिन किसी भी उपयोगी

उत्तर

19

अनुरोध पहले UrlRoutingModule वस्तु है, जो एक HTTP मॉड्यूल है के माध्यम से गुजरती हैं। यह मॉड्यूल अनुरोध को पार करता है और मार्ग चयन करता है। UrlRoutingModule ऑब्जेक्ट पहली रूट ऑब्जेक्ट का चयन करता है जो वर्तमान अनुरोध से मेल खाता है। (एक रूट ऑब्जेक्ट एक वर्ग है जो RouteBase लागू करता है, और आमतौर पर Route वर्ग का एक उदाहरण है।) यदि कोई मार्ग मेल नहीं खाता है, तो UrlRoutingModule ऑब्जेक्ट कुछ भी नहीं करता है और अनुरोध नियमित एएसपी.नेट या आईआईएस अनुरोध प्रसंस्करण पर वापस आ जाता है।

चयनित मार्ग वस्तु से, UrlRoutingModule वस्तु एक वस्तु है कि IRouteHandler इंटरफ़ेस लागू करता है और कहा कि Route वस्तु के साथ जुड़ा हुआ है प्राप्त करता है। आमतौर पर, एक एमवीसी अनुप्रयोग में, यह MvcRouteHandler वर्ग का एक उदाहरण होगा। MvcRouteHandler उदाहरण MvcHandler ऑब्जेक्ट बनाता है जो IHttpHandler इंटरफ़ेस लागू करता है। MvcHandler ऑब्जेक्ट तब नियंत्रक का चयन करता है जो अंततः अनुरोध को संभाल लेगा। अधिक जानकारी के लिए, एएसपी.नेट रूटिंग देखें।

UrlRoutingModule और MvcRouteHandler कक्षाएं एएसपी.नेट एमवीसी ढांचे के लिए प्रवेश बिंदु हैं।वे निम्नलिखित क्रियाएं करते हैं:

  • एक एमवीसी वेब अनुप्रयोग में उचित नियंत्रक का चयन करें।

  • एक विशिष्ट नियंत्रक उदाहरण प्राप्त करें।

  • नियंत्रक की Execute विधि पर कॉल करें।

Reference

+0

क्या UrlRoutingModule और Http मॉड्यूल के बीच कोई अंतर है? –

+1

@ प्रवेश: जैसा कि आपने पहले वाक्य में कहा था ** एएसपी.नेट एमवीसी-आधारित वेब एप्लिकेशन के लिए अनुरोध पहले UrlRoutingModule ऑब्जेक्ट से गुजरता है, जो एक HTTP मॉड्यूल है। ** क्या UrlRoutingModule और Http मॉड्यूल के बीच कोई अंतर है? –

+0

एक HTTP मॉड्यूल कुछ कोड की एक सामान्य अवधारणा है जो आईआईएस द्वारा निष्पादित अनुरोधों के दौरान निष्पादित किया जाता है। यह एक बहुत ही सरल वर्णन है लेकिन अधिक टिप्पणी में फिट नहीं है, इस विषय पर बहुत सी पढ़ाई है। .Net में एक वर्ग है जो IHttpModule इंटरफ़ेस लागू करता है। System.Web.Routing.UrlRoutingModule एक ठोस वर्ग है जो IHttpModule लागू करता है और यह इसे एक ठोस HTTP मॉड्यूल बनाता है जो कुछ ठोस बनाता है। ASP.Net में कई HTTP मॉड्यूल हैं और कोई भी अपना स्वयं का बना सकता है। – user3285954

2

नहीं मिला आप एक MVC परियोजना के Global.asax अंदर देखो, तो आप एक विधि RegisterRoutes बुलाया देखेंगे सकता है। इस के भीतर, आप "डिफ़ॉल्ट" ASP.NET MVC मार्ग देखेंगे:

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

इस मार्ग URL अनुरोध के प्रारूप को निर्दिष्ट करता है और कैसे इस, कार्यों नियंत्रक को मैप किया जाना चाहिए मार्ग के पहले भाग यानी नियंत्रक की पहचान करता है, दूसरा भाग कार्रवाई, इत्यादि। आप अतिरिक्त कस्टम मार्ग जोड़ सकते हैं, जो आपको विभिन्न प्रारूपों में यूआरएल के साथ काम करने की अनुमति देता है।

UrlRoutingModule केवल वह कक्षा है जो आने वाले अनुरोध URL को लेने और इन मार्गों में से किसी एक से मेल खाने के लिए ज़िम्मेदार है, इसलिए सही नियंत्रक कार्रवाई निष्पादित की जाती है।

MSDN से:

UrlRoutingModule वर्ग एक ASP.NET अनुप्रयोग में एक मार्ग पर एक HTTP अनुरोध मेल खाता है। मॉड्यूल रूटकोलेक्शन प्रॉपर्टी के सभी मार्गों के माध्यम से पुनरावृत्त करता है और एक रूट के लिए खोज करता है जिसमें URL पैटर्न है जो HTTP अनुरोध के प्रारूप से मेल खाता है। जब मॉड्यूल एक मिलान पथ पाता है, तो यह मार्ग के लिए IRouteHandler ऑब्जेक्ट पुनर्प्राप्त करता है। मार्ग हैंडलर से, मॉड्यूल को IHttpHandler ऑब्जेक्ट मिलता है और वर्तमान अनुरोध के लिए HTTP हैंडलर के रूप में उपयोग करता है। एक ASP.NET MVC आधारित वेब आवेदन करने के लिए

+0

मदद के लिए धन्यवाद भूमिका को समझने में मदद मिलेगी। –

0

बस कुछ और विवरण जोड़ने के लिए।
कोड नीचे @Ant पी ने उल्लेख किया

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

असल MapRoute मार्गों संग्रह पर एक Extension method है मार्ग रजिस्टर करने के लिए प्रयोग किया जाता है, और यह आंतरिक रूप से नीचे के रूप में लागू किया।
नोट: मेरी समझ के अनुसार यह सिर्फ एक छद्म कोड है।

var url = "{controller}/{action}/{id}"; 

     var defaults = new RouteValueDictionary(); 
     defaults.Add("controller", "Home"); 
     defaults.Add("action", "Index"); 
     defaults.Add("id", UrlParameter.Optional); 

     var routeHandler = new MvcRouteHandler(); 

     var Default = new Route(url,defaults,routeHandler); 

     routes.Add(Default); 

MvcRouteHandler के GetHttpHandler() विधि MvcHttpHandler वर्ग का एक उदाहरण है, जो आंतरिक रूप से आगे अनुरोध को पूरा करने देता है।

आशा इस बात का UrlRoutingModule

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