IIS 7.5 con l'URL Rewrite Module Doppio QueryString Parametri su postback
-
12-09-2019 - |
Domanda
Sto usando IIS 7.5 su Windows 7 RC. Io uso il modulo di riscrittura URL IIS per riscrivere gli URL.
Tutto sembra funzionare bene, fino a quando eseguo un postback facendo clic su un pulsante. E poi aggiunge i params queryString mio URL riscritto, in questo modo:
Riscritto URL, come appare nel browser: http: // localhost / it / prodotto / 1239 / Gary Fisher + + Hkek + + Mountain Bike
Senza riscrittura degli URL l'URL è:
Quando si fa clic su un pulsante per eseguire un postback, l'URL cambia a questo:
E quando l'URL viene riscritto, tutti i params queryString sono raddoppiati - così quando voglio ottenere la lingua corrente in questo modo:
Request.QueryString["lang"]
Il valore al mio ritorno è "en, en".
È qualcun altro avendo questi problemi?
UPDATE: riscrivere le regole da 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=([^=&]+)&id=([^=&]+)&title=([^=&]+)$" />
</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}&id={R:2}&title={R:3}" />
</rule>
Soluzione
Aggiungere l'appendQueryString = attributo "falso" per l'elemento di azione della regola di riscrittura pure.
Spero che questo aiuti.
Altri suggerimenti
Sono stato in grado di risolvere il problema aggiungendo
Form.Action = Request.RawUrl;
per l'evento Page Load. Sono stato in grado di lasciare appendQueryString = "TRUE" e finora sta funzionando correttamente.
Questa è una caratteristica di sicurezza della Rewrite Module di IIS.
Io personalmente preferisco ISAPI Rewrite in quanto è molto meglio, più semplice di scrivere le regole, e ha più funzioni.
hanno anche trovato in moderato ad alto carico (oltre 100 connessioni a un sito web) che il Rewrite Module di IIS corsi il pool di applicazioni di crash e deporre le uova e nuovo processo.