2010-09-22 13 views
27

मैं आईआईएस 7 UrlRewrite मॉड्यूल का उपयोग कर रहा हूँ। मैंने web.config <system.webServer><rewrite> अनुभाग में अपने नियम स्थापित किए हैं। मैं जानना चाहता हूं कि वेब.config फ़ाइल की बजाय एक बाहरी xml फ़ाइल में नियमों को परिभाषित करने का कोई तरीका है या नहीं। धन्यवाद।आईआईएस 7 urlrewrite मॉड्यूल - बाहरी xml फ़ाइल में नियम

+0

मुझे पता नहीं है। आपको इसकी आवश्यकता क्यों होगी? – Remy

+3

@ रेमी: देर से प्रतिक्रिया, लेकिन जब आपके पास बहुत सारे पुनर्लेखन नियम होते हैं तो यह web.config की पठनीयता को बढ़ाता है। वैसे भी मेरे लिए यही कारण है। IIS में – magnattic

+0

> = 7.5 यूआरएल को पुनर्स्थापित करने के लिए याद रखें यहां से https://www.iis.net/downloads/microsoft/url-rewrite –

उत्तर

1

आप नमूना URL पुनर्लेखन प्रदाताओं कि एक अलग फाइल में उन लोगों के भंडारण के लिए एक शामिल हैं का उपयोग कर सकते, देखें: http://www.iis.net/learn/extensions/url-rewrite-module/using-custom-rewrite-providers-with-url-rewrite-module

+0

लेकिन यह मैपिंग के लिए है। कस्टम नियम निर्धारित करने के लिए कॉन्फ़िगर का उपयोग किसी अन्य उद्देश्य के लिए किया जाता है। कभी-कभी हमें आवश्यक सभी यूआरएल मैपिंग्स के लिए एक रेग एक्सप्रेशन का उपयोग करने की आवश्यकता होती है, तो इसे कॉन्फ़िगरेशन में शामिल करने का एकमात्र तरीका है। –

50

हाँ, आप की तरह आप दूसरे के साथ कर सकते हैं एक बाहरी फ़ाइल को इंगित करने configSource विशेषता का उपयोग कर सकते हैं web.config खंड। web.config में:

<rewrite> 
    <rules configSource="Rewrite.config" /> 
</rewrite> 

और नियम कॉन्फ़िग फ़ाइल में:

<rules> 
    <rule name="some rule"> 
     <!-- rule details here ---> 
    </rule> 
</rules> 

तुम अब भी भी आईआईएस प्रबंधक का उपयोग नियमों को संपादित कर सकते हैं और यह सिर्फ काम करेंगे। इस दृष्टिकोण के साथ एक मामूली चेतावनी: जब आप कोई बदलाव करते हैं और इस तरह की बाहरी फाइल को सहेजते हैं, तो यह वेब.कॉन्फिग में बदलाव करने जैसे एप्लिकेशन को रीसायकल नहीं करेगा। इसलिए यदि आप एक नियम संपादित कर रहे हैं और इसे देखना चाहते हैं, तो इसे संपादित करके और इसे सहेजकर आपको web.config को मैन्युअल रूप से पोक करना होगा।

एक और संदर्भ: Moving IIS7 url rewrite section out of the web.config file

+0

क्या आप इस बारे में निश्चित हैं कि बाहरी परिवर्तनों पर पुनर्नवीनीकरण नहीं किया जा रहा है? [RestartOnExternalChanges] (http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.restartonexternalchanges.aspx) नामक कॉन्फ़िगरेशन अनुभागों पर एक और प्रॉपर्टी है और यह सत्य पर डिफ़ॉल्ट है। – magnattic

+0

@atticae मुझे विश्वास है कि RestartOnExternalChanges केवल कस्टम परिभाषित

तत्वों पर लागू होता है, जो नियमों को फिर से लिखते हैं। http://forums.iis.net/t/1155629.aspx मुझे यकीन नहीं है कि तब से कुछ भी बदल गया है, यह धागा 200 9 से है ... –

+0

दुर्भाग्य से Rewrite.config में IntelliSense काम नहीं करता है। क्या इस मुद्दे को हल करने का कोई तरीका है? –