9

हमारी दुकान एएसपी.नेट एमवीसी को एक बड़े वेब एप्लिकेशन में एकीकृत कर रही है जो कस्टम & system.webServer \ हैंडलर के तहत web.config में परिभाषित तृतीय पक्ष HTTP हैंडलर का उपयोग करती है। इस तरह से HTTP हैंडलर का लाभ उठाना हमारे लिए बहुत अच्छा रहा है क्योंकि हमें ऐप को फिर से कंपाइल करने की आवश्यकता नहीं है या उत्पाद के प्रत्येक उदाहरण के लिए वेब स्कोप में डिस्क पर बैठे वास्तविक हैंडलर पृष्ठ की आवश्यकता नहीं है।एएसपी.NET रूटिंग वेब.कॉन्फिग एचटीपी हैंडलर सेक्शन पर सटीकता क्यों लेती है?

क्या हमारे वैश्विक.एक्सएक्स में स्पष्ट इग्नोर मार्ग जोड़ना वाकई आवश्यक है, इसलिए रनटाइम web.config में परिभाषित हमारे हैंडलर का सम्मान कर सकता है? मैंने वेब पर सोचा होगा। के बाद रूटिंग को सिस्टम.वेबसेवर \ हैंडलर में परिभाषित हैंडलर चेक किया गया है (अन्य तरीकों से नहीं)।

हम एक मॉड्यूलर डिज़ाइन का उपयोग करते हैं जो सुविधाओं को जोड़े जाने पर web.config से हैंडलर जोड़ने/छोड़ने की अनुमति देता है। एमवीसी रूटिंग के परिचय के साथ ऐसा प्रतीत होता है कि हमें web.config में परिभाषित प्रत्येक संभावित हैंडलर के लिए global.asax फ़ाइल में अनदेखा मार्ग जोड़ने की आवश्यकता है।

नोट करें कि इन हैंडलरों को वास्तविक फ़ाइल डिस्क पर मौजूद नहीं है - वे एक असेंबली में वर्चुअल और एम्बेडेड हैं। यदि आप System.Web.Routing आप http हैंडलर वेब में निर्दिष्ट के लिए मार्गों पर ध्यान न दें शामिल करना चाहिए का उपयोग

<system.webServer> 
    <handlers> 
      <!-- telerik radcontrols --> 
      <add name="TelerikDialogHandler" verb="*" path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler, Telerik.Web.UI, Version=2009.1.402.20, Culture=neutral, PublicKeyToken=121fae78165ba3d4"></add> 
    </handlers> 
</system.webServer> 
रिकार्ड के लिए

तो: यह एक 3 पार्टी हैंडलर का एक उदाहरण है कि अब Global.asax में रूट पर ध्यान न दें एक स्पष्ट आवश्यकता है .config? या शायद मैं कुछ गलत कर रहा हूँ?

+3

रूटिंग को HttpModule के रूप में कार्यान्वित किया गया है, इसलिए इसे हमेशा HttpHandler चुनने से पहले संसाधित किया जाता है। –

+1

आप इसे उत्तरदायी उत्तर के रूप में क्यों नहीं पोस्ट करते हैं, इसलिए आप इससे प्रतिनिधि प्राप्त करते हैं। विस्तार के लिए –

उत्तर

2

एएसपी.नेट अनुरोध प्रसंस्करण एक पाइपलाइन मॉडल पर आधारित है जिसमें एएसपी.नेट पाइपलाइन में सभी मॉड्यूल के लिए http अनुरोध पास करता है। प्रत्येक मॉड्यूल को http अनुरोध प्राप्त होता है और इसका पूरा नियंत्रण होता है। एक बार अनुरोध सभी HTTP मॉड्यूल के माध्यम से गुजरता है, अंत में इसे एक HTTP हैंडलर द्वारा संसाधित किया जाता है। HTTP हैंडलर इस पर कुछ प्रसंस्करण करता है, और परिणाम पाइपलाइन में HTTP मॉड्यूल के माध्यम से फिर से गुजरता है।

मुझे लगता है कि इनके बारे में सोचने का सबसे अच्छा तरीका यह है कि HttpModule एक फ़िल्टर होता है जो किसी ईवेंट के दौरान अनुरोध ऑब्जेक्ट से कुछ जोड़ता या घटाता है और HttpHandler एक प्रोसेसर है जो वास्तव में अनुरोध परोसता है। एएसपी.नेट अनुरोध जीवन चक्र इस तरह से स्थापित किया गया है कि सभी फ़िल्टरप्रसंस्करण प्रसंस्करण से पहले अनुरोध पर लागू होते हैं।

+0

धन्यवाद जोनास। हमने व्यवहार से बचने के लिए प्रत्येक ऐप इंस्टेंस के लिए मार्गों को अनदेखा करने के रूप में सभी संभावित एचटीपी हैंडलरों की एक मास्टर सूची को ढेर करने का निर्णय लिया है (भले ही हमारे कुछ ऐप उदाहरण कुछ हैंडलर का उपयोग न करें)। –

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