Ajustando o endereço

Algumas vezes precisamos ajustar a URL de uma determinada página, seja para otimizar o SEO ou para redirecionar para uma nova páginas.

Se você está utilizando o IIS existe um módulo chamado de URL Rewriting que ajuda bastante nisso. Na página http://ruslany.net/2009/04/10-url-rewriting-tips-and-tricks/ segue alguns exemplos para:

  • Adicionar ou remover a “/” final
  • Transformar a url em caixa baixa (lower case)
  • Canonização de hostname
  • Redirecionar para HTTPs

CORS, inimigo meu

Se eu tenho um problema com alguma definição é com CORS, eita coisinha mais chata.

Esses dias um colega meu criou uma nova WEB API que funcionava corretamente no IIS Express mas não no IIS e o handler para tratamento de CORS estava lá.

E eu fiquei matutando, eu já tive esse exato problema a algum tempo atrás e nada de me lembrar a solução. Lá pelas tantas começo a olhar o web.config do projeto que funcionava e passo pela linha

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" /> 
    ...
</system.webServer>

Bingo!!!! Era isso!

Colocamos no web.config da aplicação ela funcionou corretamente.

Bombando no Cache

Controle de cache para elementos estáticos é muito recomendado.

Estava fuçando nestas configurações no IIS e encontrei a configuração <ClientCache>. Ela pode ser utilizando tanto no web.config quando via Gerenciamento do IIS.

Via web.config é:

<system.webServer>
    ...
    <staticContent>
        <clientCache cacheControlCustom="public" cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
    </staticContent>
    ...
</system.webServer>

Onde se define a forma do cache-control e o tempo de duração.

Já no Gerenciamento do IIS é feito via “HTTP Response Header” e aplicar as mesmas configurações.

Mais informações na página do IIS Client Cache.

Indo pelo caminho correto

Em algumas ocasiões é necessário, ao acessar uma URL, redirecionar para outro local.

Com o IIS é bem tranquilo fazer isso, tem uma opção chamada HTTP Redirecting. Nela é possível colocar a URL de destino, e o servidor retorna o HTTP 302 e o novo endereço.

Essa semana eu precisei fazer algo diferente. Alem de redirecionar para o destino, eu teria que manter os parâmetros de QueryString.

Para fazer isso funcionar, basta colocar um $S$Q junto a URL, basicamente: http://www.YourDomain.com$S$Q. Como também pode ser visto em http://stackoverflow.com/questions/7147806/iis-redirect-preserve-querystring.

Isso me lembrou o velho Prompt $P$G

O porteiro da aplicação

Uma parte importante de uma aplicação são os processos de autenticação e autorização.

  • Autenticação: o processo de apresentar a identidade para o porteiro
  • Autorização: o porteiro me dizer se eu posso subir na cobertura do prédio ou não

Recentemente fiz uma aplicação que ASP.net MVC 4 que utilizava autenticação através de usuário e senha, a mais normal de todas. O mais estranho é que a página de criação de usuário funcionava perfeitamente no IIS 7 mas no IIS Express gerava erro de acesso negado.

Aparentemente o IIS Express utiliza uma configuração existente no projeto para permitir ou não autenticação anonima. Após alterar a propriedade IISExpressAnonymousAuthentication tudo funcionou corretamente.

Alterando imagens durante o vôo

Esses dias me deparei com algo bem interessante o Image Resizing. Sabem aquela situação que precisamos mostrar uma miniatura de uma imagem muito grande e temos duas escolhas, ou criar uma nova imagem menor, ou apenas apresentar a mesma image de 3 MB reduzida ?

O melhor é ter uma imagem menor para apresentar mais rápido e não prejudicar  o carregamento da página Web, mas alguma vezes o trabalho é grande. O Image Resizing serve justamente para isso.

Através de parâmetros passados na URL é possível redimensionar uma imagem, transformar um PNG em JPEG, fazer um corte em uma região da imagem, além de outras coisa mais avançadas como alterar brilho, contraste e muitas outras opções.

Ele pode ser configurado em uma aplicação .net ou diretamente no IIS, bem simples e fácil.