Isso está bloqueado diretamente no nível do kernel do IIS. Como teste, retirei todos os módulos do IIS para que ele nem tivesse um manipulador de página estático e ainda exibisse a mensagem de erro 400.
Não acredito que seja possível com o IIS contornar isso. As configurações do registro mencionadas são para outros tipos de caracteres restritos. Não vi uma alavanca para alterar essa funcionalidade.
Qual é o seu objetivo é evitar isso? Ele abre sua superfície de ataque mais ampla e não consigo imaginar um visitante legítimo sendo perdido como resultado do bloqueio de seqüências de escape de URL incompletas.
Update2:
Aqui estão três ótimos links sobre isso. Nazim Lala e Wade Hilmo da equipe do IIS publicaram um blog sobre isso por causa de discussões sobre sua pergunta. Scott Hanselman também tem um ótimo post sobre a parte da querystring no .NET:
Atualização:
verifiquei com um membro da equipe do IIS para obter uma resposta autorizada. Ele mencionou que o% é considerado um caractere não seguro de acordo com a RFC 1738 ( http://www.ietf.org/rfc/rfc1738.txt ).
Aqui está o texto relevante:
Inseguro:
Os caracteres podem não ser seguros por vários motivos. O caractere de espaço é inseguro porque espaços significativos podem desaparecer e espaços insignificantes podem ser introduzidos quando as URLs são transcritas ou digitadas ou submetidas ao tratamento de programas de processamento de texto. Os caracteres "<" e ">" não são seguros porque são usados como delimitadores em torno de URLs em texto livre; a citação ("" ") é usada para delimitar URLs em alguns sistemas. O caractere" # "é inseguro e sempre deve ser codificado porque é usado na World Wide Web e em outros sistemas para delimitar um URL de um fragmento / âncora O identificador "%" não é seguro porque é usado para codificações de outros caracteres. Outros caracteres são inseguros porque é conhecido que gateways e outros agentes de transporte às vezes modificam esses caracteres. Esses caracteres são "{", "}", "|", "\", "^", "~", "[", "]" e "` ".
Todos os caracteres não seguros devem sempre ser codificados em um URL. Por exemplo, o caractere "#" deve ser codificado nas URLs, mesmo em sistemas que normalmente não lidam com identificadores de fragmento ou âncora, para que, se a URL for copiada para outro sistema que os use, não seja necessário alterar o Codificação de URL.
Portanto, o IIS proativamente bloqueia isso no nível principal, uma medida de segurança proativa para minimizar a superfície de ataque.