2009-07-10 6 views
8

पर मैं विंडोज 7 आरसी पर आईआईएस 7.5 का उपयोग कर रहा हूं। मैं यूआरएल यूआरएल रिवाइट मॉड्यूल का उपयोग यूआरएल को फिर से लिखने के लिए करता हूं।आईआईएस 7.5 यूआरएल के साथ रीब्राइट मॉड्यूल डबल्स क्वेरीब्रिंग पैराम्स पोस्टबैक

सबकुछ ठीक काम करता प्रतीत होता है, जब तक कि मैं एक बटन क्लिक करके पोस्टबैक नहीं करता। ,

फिर से लिखा यूआरएल के रूप में यह ब्राउज़र में प्रकट होता है:: यह तो मेरे फिर से लिखा यूआरएल के लिए क्वेरी स्ट्रिंग पैरामीटर, इस तरह जोड़ देती http://localhost/en/product/1239/Gary+Fisher+Hkek+Mountain+Bike

URL वह URL पुनर्लेखन के बिना है:

http://localhost/product.aspx?lang=en&id=1239&title=Gary+Fisher+Hkek+Mountain+Bike

जब मैं एक पोस्टबैक करने के लिए एक बटन पर क्लिक करता हूं, तो यूआरएल इसमें बदल जाता है:

http://localhost/en/product/1239/Gary+Fisher+Hkek+Mountain+Bike?lang=en&id=1239&title=Gary+Fisher+Hkek+Mountain+Bike

और जब यूआरएल फिर से लिखा है, सभी querystring पैरामीटर दोगुनी कर रहे हैं - तो जब मैं ऐसा करने से वर्तमान भाषा प्राप्त करना चाहते हैं:

Request.QueryString["lang"] 

मूल्य मैं वापस पाने के ", एन एन" है।

क्या कोई और समस्या है?

अद्यतन: Web.Config

से नियम पुनर्लेखन
<rule name="RedirectProductPageUrls" stopProcessing="true"> 
    <match url="^product\.aspx$" /> 
    <conditions logicalGrouping="MatchAll"> 
     <add input="{REQUEST_METHOD}" negate="true" pattern="^POST$" /> 
     <add input="{QUERY_STRING}" pattern="^lang=([^=&amp;]+)&amp;id=([^=&amp;]+)&amp;title=([^=&amp;]+)$" /> 
    </conditions> 
    <action type="Redirect" url="{C:1}/products/{C:2}/{C:3}" appendQueryString="false" redirectType="Permanent" /> 
</rule> 
<rule name="RewriteProductPageUrls" stopProcessing="true"> 
    <match url="^([^/]+)/product/([^/]+)/([^/]+)/?$" /> 
    <conditions logicalGrouping="MatchAll"> 
     <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> 
    </conditions> 
    <action type="Rewrite" url="product.aspx?lang={R:1}&amp;id={R:2}&amp;title={R:3}" /> 
</rule> 
+0

क्या आप अपना पुनर्लेखन नियम पोस्ट कर सकते हैं? वेब.कॉन्फिग में जो कुछ भी है पोस्ट करें: <नियम नाम = "foo"> ... –

+0

पुन: लिखने वाले नियम के साथ अपडेट किया गया है, और उत्पाद पृष्ठों के लिए एक रीडायरेक्ट नियम। – MartinHN

उत्तर

8

appendQueryString = "false" पुनर्लेखन नियम की कार्रवाई तत्व के लिए विशेषता के रूप में अच्छी तरह से जोड़ें।

उम्मीद है कि इससे मदद मिलती है।

+0

एक आकर्षण की तरह काम करता है! अब मैं विंडोज 7 आरटीएम के लिए तैयार हूं। – MartinHN

0

यह आईआईएस रिवाइट मॉड्यूल की एक सुरक्षा सुविधा है।

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

मध्यम से उच्च लोड (वेबसाइट पर 100 से अधिक कनेक्शन) के तहत भी पाया गया है कि आईआईएस रिवाइट मॉड्यूल क्रैश और स्पॉन और नई प्रक्रिया के लिए एप्लिकेशन पूल को कोर्स करता है।

+0

ब्रूस, मैंने अभी UrlRewritting Dll को छोड़ दिया क्योंकि यह मुझे क्लासिक मोड में app_pool का उपयोग करने के लिए मजबूर कर दिया। मुझे लगा कि आईआईएस 7 का अंतर्निहित बेहतर और अधिक अनुकूलित होगा। क्या आप अन्यथा सुझाव दे रहे हैं? कृपया मुझे बताएं .. मुझे चिंता है। – aron

11

मैं Page_Load घटना के लिए

Form.Action = Request.RawUrl; 

जोड़कर इस मुद्दे को हल करने में सक्षम था। मैं appendQueryString = "TRUE" छोड़ने में सक्षम था और अब तक यह ठीक से काम कर रहा है।

+0

अरे रयान, मैं एक भाग्य के साथ एक घंटे के लिए appendQueryString के साथ fiddled। लेकिन आपके सुझाव काम किया! धन्यवाद – aron

+0

हां, उस समस्या को वास्तव में फॉर्म एक्शन संशोधित करके हल किया जाता है। आप एक कस्टम नियंत्रण एडाप्टर बना सकते हैं ताकि परिवर्तन साइट के सभी रूपों पर लागू हो। स्कॉट गु के पास इस पोस्ट के नीचे एक गाइड है: [लिंक] (http: //weblogs.asp।शुद्ध/scottgu/संग्रह/2007/02/26/टिप-चाल यूआरएल-पुनर्लेखन-साथ-एएसपी-net.aspx) – Corgalore

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