2009-04-02 11 views
9

मैं एक रूट फ़ोल्डर के सभी उपफोल्डर्स को शामिल करने के लिए एक HttpHandler को पंजीकृत करना चाहता हूं, भले ही वे कितने दूर हैं। मैं नीचे दिए गए कोड के साथ व्यवहार करने की अपेक्षा करता हूं, लेकिन वास्तव में इसमें केवल मूल फ़ोल्डर में आइटम शामिल होते हैं।Asp.Net में सभी सबफ़ोल्डर के लिए HttpHandler को कैसे पंजीकृत करें?

<httpHandlers> 
    <add verb="*" path="root/*" type="HandlerType, Assembly" /> 
</httpHandlers> 

मैं निश्चित रूप से रजिस्टर कर सकते हैं, जैसा कि नीचे कुछ भी दूसरी श्रेणी है कि शामिल करने के लिए, फिर भी अभी तक एक तरह से बस रूट से नीचे कुछ भी कहने के लिए सामना करने के लिए की है।

<httpHandlers> 
    <add verb="*" path="root/*/*" type="HandlerType, Assembly" /> 
</httpHandlers> 

यह वह जगह है कुछ टोपी मुझे काफी देर के लिए गुस्सा दिलाना किया गया है और मैं एक सरल समाधान की जानकर बहुत खुशी होगी।

मैं यह स्पष्ट करना चाहता हूं कि जब मैं "रूट" कहता हूं तो मेरा मतलब यह नहीं है कि एप्लिकेशन की जड़ का मतलब है और आवेदन में सभी अनुरोधों को संसाधित करने के लिए आवश्यक रूप से आवेदन करने में दिलचस्पी नहीं है।

उत्तर

0

शायद आपको HttpHandler के बजाय HttpModule का उपयोग करना चाहिए।

+0

यह निश्चित रूप से हमेशा एक विकल्प है, लेकिन मुझे किसी विशिष्ट फ़ोल्डर के नीचे सभी अनुरोधों के लिए एप्लिकेशन में सभी अनुरोधों के लिए हैंडलर की आवश्यकता नहीं है। मैं अपने प्रश्न में अस्पष्ट हो सकता था, "जड़" से मेरा मतलब यह नहीं है कि फ़ोल्डर के पेड़ में उस शाखा की साइट का जड़ है। – YonahW

6

आप पथ के साथ इस "रूट" फ़ोल्डर में web.config बना सकते हैं = "*"

+1

यह एक अच्छा विचार है हालांकि मेरे मामले में मैं एक यूआरएल से निपट रहा हूं जो किसी फ़ोल्डर से मेल नहीं खाता है। – YonahW

19

आप एक अलग web.config जरूरत नहीं है। अपनी प्राथमिक web.config में < स्थान> तत्व का उपयोग करें:

<!-- Configuration for the "root" subdirectory. --> 
<location path="root"> 
    <system.web> 
    <httpHandlers> 
     <add verb="*" path="root" type="HandlerType, Assembly"/> 
    </httpHandlers> 
    </system.web> 
</location> 
+0

यह बहुत अच्छा है। इस तत्व के बारे में कभी नहीं पता था, साझा करने के लिए धन्यवाद। – YonahW

+0

यह चाल है! आपका बहुत बहुत धन्यवाद! – Allov

+0

यह पूरी तरह स्वीकार्य उत्तर होना चाहिए! – ssougnez

0

आपको http मॉड्यूल है कि हर आने वाली अनुरोध के लिए यूआरएल की जाँच करता है बना सकते हैं।

  • बदलें अनुरोध पथ कुछ डमी मूल्य के ठीक नीचे वाले Context.Items में पूर्ण, मूल यूआरएल रखो: अनुरोध यूआरएल किसी भी फ़ोल्डर में है, तो आप अपने हैंडलर हैंडल करना चाहते हैं, यह इस करता है हैंडलर का फ़ोल्डर, हैंडलर की कॉन्फ़िगरेशन से मेल खाता है।

हैंडलर अब बुलाया जाएगा, और यह अनुरोध में डमी यूआरएल मिलेगा। यह इस यूआरएल को अनदेखा करता है, और वास्तविक यूआरएल को संसाधित करता है जो इसे संदर्भ में मिलेगा। इटम्स।

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