Usando ASP.NET MVC3, como posso ter o IIS não redirecionar 302 no roteamento com diferenciação de maiúsculas e minúsculas?

5

Usando a ASP.NET MVC3, como posso ter o IIS não redirecionando o 302 no roteamento com diferenciação de maiúsculas e minúsculas?

Por exemplo, eu crio uma pasta de aplicativos em meu site chamada "Admin" no IIS. O javascript (existem centenas de arquivos, nenhuma mudança trivial, e então quando um novo código é gerado ou escrito, nós temos que aplicar manualmente em todas as rotas? Eu acho que é um exagero) e alguns dos links escritos à mão apontam para /admin/ControllerName/ ou /admin/controllername/ e, portanto, quando o IIS vê isso, emite um 302 para /Admin/ControllerName/ . Obviamente (eu testei para confirmar) apenas alterando o case evita o 302.

Cada imagem, javascript include, etc, causa dois hits no IIS.

Como posso reduzir o tráfego e apenas fazer o IIS ir em frente e redirecionar-me sem distinção entre maiúsculas e minúsculas, para que possamos parar todos os 302s bobos. Ou isso é impossível e eu deveria aplicar cada URL em potencial para todo o código que escrevemos? Ou eu só preciso engolir e viver com os 302's?

    
por jcolebrand 11.01.2013 / 21:10

2 respostas

8

Suponho que você esteja usando o WS-Federation? Ou pelo menos usando o WSFederationAuthenticationModule e / ou SessionAuthenticationModule? Esses dois módulos executam um redirecionamento para corresponder à caixa do seu aplicativo, pois ele está no IIS sempre que não conseguirem autenticá-lo ou verificar se você está autorizado a obter o recurso solicitado. Eu não vejo nenhuma maneira de evitar que isso aconteça, e mesmo se você pudesse, você provavelmente não seria capaz de acessar os recursos usando /admin .

A razão para isso é que o caminho listado nos cookies faz distinção entre maiúsculas e minúsculas, e como tudo relacionado ao WS-Federation é feito por meio de cookies, o invólucro deve corresponder. Se os cookies que mostram que você foi autenticado forem criados para /Admin e você tentar acessar /admin , ele não será autenticado.

Uma solução possível seria definir o diretório admin como um aplicativo separado no IIS e configurá-lo para não usar o FAM ou o SAM. No entanto, com base no nome do diretório, acredito que não será uma opção viável para você, pois você perderá a autenticação nesse diretório.

    
por 08.05.2014 / 05:33
1

Hmmmm, eu achei que o IIS era insensível a maiúsculas e minúsculas.

Tem certeza de que não há reescrita de URLs que você possa desativar?

Felicidades

    
por 11.01.2013 / 21:18