IIS 6 em x64 e URLs longos

1

Eu tenho uma URL muito longa em um site hospedado no Windows 2003 x64 que se parece com isso:

http://myhost/a_very_very_long_url_around_300_chars_long

(ou seja, um único segmento muito longo em torno de 300 caracteres)

O problema é que estou recebendo uma resposta 400 Bad Request do HTTP.SYS (ela nem chega ao IIS). Eu posso dizer porque essas solicitações aparecem em system32\LogFiles\HTTPERR , por exemplo:

2009-09-17 19:51:29 200.123.179.9 3636 192.168.129.50 80 HTTP/1.1 GET /a_very_very_long_url_around_300_chars_long 400 - URL -

Eu tentei definir o UrlSegmentMaxLength no registro e isso corrige o problema na minha caixa x86 do Windows 2003, mas não no x64 servidor de produção. Eu tentei isso em outro servidor Win2k3 x64 e também falhou.

Alguma dica?

    
por Mauricio Scheffer 17.09.2009 / 22:07

3 respostas

1

Por fim, migrei para o Windows 2008 R2 (IIS 7.5) x64 e apliquei a alteração UrlSegmentMaxLength e funcionou. Então eu estou supondo que isso foi um bug no Windows 2003 x64 ...

    
por 26.09.2011 / 21:08
1

Como você está vendo erros no log HTTPERR, isso não é um problema do URLScan - o HTTP.sys não entregou o URL para o IIS, portanto, o filtro URLScan ISAPI não será executado.

De um artigo diferente do Windows IT Pro , o HTTP.sys assumiu o controle do URLScan para a maioria dos problemas em relação a extensões de URL e segmentos, e você está correto ao examinar as chaves de registro do HTTP.sys.

Curiosamente, eu posso mudar isso, mas tenho problemas em criar diretórios físicos ou diretórios virtuais que são tão longos devido a problemas de MAX_PATH e restrições da Metabase.

Se você estiver usando uma ferramenta de reescrita, na verdade, você pode ter problemas que são aparentes apenas na implementação x64 ou uma pequena diferença entre como x86 e x64 interpreta a URL.

    
por 25.09.2009 / 20:49
0

Primeiro, verifique se você está usando a versão mais recente do URLscan (encontrado aqui )

Em seguida, verifique se as entradas a seguir estão em urlscan.ini, se você precisar aumentá-las (para mais de 300 para MaxUrl), este é o lugar para fazer isso:

; Existem 3 limites de casos especiais:
; - MaxAllowedContentLength especifica o máximo permitido de; valor numérico do cabeçalho de solicitação Content-Length. Para o natal; Por exemplo, configurando isso para 1000 causaria qualquer solicitação de; com um tamanho de conteúdo que excede 1000 para ser rejeitado. O padrão é 30000000.
; - MaxUrl especifica o tamanho máximo do URL de solicitação,
; não incluindo a string de consulta. O padrão é 260 (que é equivalente a MAX_PATH).
; MaxQueryString especifica o comprimento máximo da consulta. corda. O padrão é 2048

MaxAllowedContentLength = 30000000
MaxUrl = 260
MaxQueryString = 2048

    
por 22.09.2009 / 23:45

Tags