IIS 7.5 com URL Rewrite Module Duplas QueryString Params no postback
-
12-09-2019 - |
Pergunta
Estou usando o IIS 7.5 no Windows 7 RC. Eu uso o módulo IIS Url Rewrite para reescrever URLs.
Tudo parece funcionar bem, até que eu executar uma nova postagem, clicando em um botão. Em seguida, ele acrescenta os parâmetros querystring à minha URL reescrito, assim:
Rewritten URL, como aparece no navegador: http: // localhost / en / produto / 1239 / Gary Fisher + + Hkek + montanha + bicicleta
Sem URL reescrever o URL é:
Quando eu clicar em um botão para executar uma nova postagem, o URL muda para este:
E quando a URL é reescrita, todos os parâmetros querystring são dobrados - por isso, quando eu quero começar o idioma atual, fazendo isso:
Request.QueryString["lang"]
O valor eu voltar é "en, en".
É alguém ter esses problemas?
UPDATE: regras de reconfiguração de 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>
Solução
Adicione o appendQueryString = atributo "false" para o elemento da regra de reescrita bem acção.
Espero que isso ajude.
Outras dicas
Eu era capaz de resolver o problema adicionando
Form.Action = Request.RawUrl;
para o evento Page_Load. Eu era capaz de deixar appendQueryString = "true" e até agora ele está funcionando corretamente.
Esta é uma característica do Módulo Rewrite IIS de segurança.
Eu pessoalmente prefiro ISAPI Rewrite como é muito melhor, mais simples de escrever as regras, e tem mais recursos.
Tem também encontrado em moderada a alta carga (mais de 100 ligações a um site) que o módulo Rewrite IIS cursos do pool de aplicativos para falhar e desova e novo processo.