2010-08-30 2 views
6

मैं अपनी परियोजना में पुनः लिखने वाले यूआरएल को सक्षम करने की कोशिश कर रहा हूं। यह इस पोस्ट में बहुत अच्छा वर्णन है: urlrewriting by scottgu स्थानीयहोस्ट पर इसे चलाने पर यह बहुत अच्छा काम करता है, लेकिन जैसे ही मैं इसे अपने होस्ट (.NET 3.5) पर अपलोड करता हूं, यह काम नहीं करता है! मैं हमेशा 404 पेज पर रीडायरेक्ट हो जाता हूं!एएसपीनेट के साथ यूआरएल पुनर्लेखन। क्या एक विन्यास की आवश्यकता है?

क्या यह सक्षम करने के लिए कोई कॉन्फ़िगरेशन आवश्यक है? रूप scottgu नहीं कहते हैं, लेकिन मैं बाहर क्यों यह काम नहीं कर रहा भी नहीं मिलता है ...

धन्यवाद

// अद्यतन 2.09.2010

वहाँ वास्तव में बिना मार्ग या पुनर्लेखन सक्षम करने के लिए एक रास्ता है आईआईएस 7 या सर्वर पर आईएसएपीआई रीवाइट जैसे मॉड्यूल स्थापित करने की क्षमता है? ऐसा लगता है कि मैं एक बुरा asp.net मेजबान मिल गया ...

+0

क्या आपने यह देखने की कोशिश की है कि आपके यूआरएल को एप्लिकेशन_BeginRequest में कैसे लिखा गया है? – mamoo

+1

आपके आईआईएस का संस्करण क्या है? – Adeel

+0

मैं इसे कैसे देख सकता हूं? इस विधि का उपयोग कर रहा हूं: शून्य आवेदन_BeginRequest (ऑब्जेक्ट प्रेषक, EventArgs ई) { स्ट्रिंग fullOrigionalpath = Request.Url.ToString(); अगर (fullOrigionalpath.Contains ("/ Products/books.aspx")) { संदर्भ। पुनर्लेखन ("/ Products.aspx? श्रेणी = पुस्तकें"); } .... } – k0ni

उत्तर

4

अपने स्थानीय होस्ट माहौल में आप शायद अपने ASP.NET विकास सर्वर पर वेबसाइट चला रहे हैं। वह सर्वर सभी अनुरोध (*। *) को कैप्चर करने के लिए सेट किया गया है और उन्हें एएसपी.नेट पाइपलाइन के माध्यम से चलाया जाता है।

II6 दूसरी ओर, केवल एएसपी.NET पाइपलाइन के माध्यम से कुछ अनुरोध (यानी * .aspx, * .asmx, * .ashx) भेजने के लिए कॉन्फ़िगर किया गया है। इसलिए यदि आप "/ my/fine/url" जैसे यूआरएल के लिए अनुरोध पकड़ने की कोशिश कर रहे हैं जो कभी भी एएसपी.NET हैंडलर को नहीं भेजा जाएगा, और इस प्रकार फिर से लिखा नहीं जाएगा।

आप इस विन्यास आवेदन विन्यास में वेबसाइट के लिए बदल सकते हैं:

  • टैब "होम निर्देशिका" पर

    1. ओपन आईआईएस प्रबंधक और वेबसाइट पर राइट क्लिक करें, चुनें गुण, क्लिक करें "विन्यास ... "बटन।
    2. वाइल्डकार्ड एप्लिकेशन मानचित्र डालने के लिए "सम्मिलित करें ..." बटन पर क्लिक करें।
    3. "निष्पादन योग्य:" में aspnet_isapi.dll में पथ डालें, मेरे मामले में सी: \ विन्डोज़ \ Microsoft.NET \ Framework \ v2.0.50727 \ aspnet_isapi.dll (नोट: यह पथ आपके सर्वर पर भिन्न हो सकता है)।
    4. अनचेक करना याद रखें "उस फ़ाइल को सत्यापित करें"
    5. ठीक क्लिक करें!

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

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

    /डेनिस :-)

  • +0

    बहुत बहुत शुक्रिया! प्रतिभा! – k0ni

    +0

    लेकिन मुझे दिलचस्पी होगी कि यह प्रदर्शन और अन्य चीजों को कैसे प्रभावित करता है ... क्या यह करने का यह सही तरीका है? THX – k0ni

    +0

    IIS6 पर ASP.NET MVC को चलाने के लिए जिस तरह से Thats लेकिन फिर भी स्थिर सामग्री के लिए सभी अनुरोधों ASP.NET पाइप लाइन के माध्यम से जा रहे हैं और प्रदर्शन ग्रस्त है। आप इससे बचने के लिए mscd.codeplex.com का उपयोग कर सकते हैं। – dariol

    0

    यहाँ उदाहरण कैसे ASP.NET WebForms के भीतर नई System.Web.Routing उपयोग करने के लिए है।

    http://deepumi.wordpress.com/2010/02/27/url-routing-in-asp-net-web-forms/

    +0

    यह बहुत ही प्रतीत हो रहा है समय लेने वाली .. जहाँ तक मुझे पता के रूप में एक बहुत आसान होना चाहिए .. – k0ni

    1

    वहाँ IIS6 में extensionless मार्गों पाने के लिए दो तरीके हैं:

    क) ISAPI पुनर्लेखन या अन्य ISAPI यूआरएल rewriter
    ख) aspnet_isapi करने के लिए एक वाइल्डकार्ड मानचित्रण का प्रयोग करें।डीएल

    विस्तृत निर्देशों के लिए this blog post देखें।

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