quarta-feira, 28 de novembro de 2012

Mistérios do .Net

Sabe quando você acha que sabe alguma coisa, e de repente, tudo, por alguma razão desconhecida começa a cair por água abaixo, aquela sensação de segurança que começa a esvair-se.  Pois é, nesse mundo da informática a coisa funciona dessa forma, de vez em quando, pelo menos pra mim. Tantos anos de Genexus e estudando detalhadamente seus melindres, e, subitamente o IIS 7.0, que estava funcionando perfeitamente bem, começa a apresentar um erro meio doidão.

O pior é que essas situações acontecem nos momentos mais críticos, onde você simplesmente não tem tempo a perder, como por exemplo, meia hora antes de uma palestra, já pensou no sufoco?

HTTP Error 500.19 - Internal Server Error

The requested page cannot be accessed because the related configuration data for the page is invalid.
Error Code: 0x8007000d  
 
E lógico, que antes da ficha cair de fato, o excesso de confiança nos leva a mexer aqui, ali, e aquilo que tava ruim vai ficando cada vez pior. Pois achava que o problema era o Pool de aplicação, versão do .Net, coisas de DLLs, que o pessoal do Tomcat não sofre efeito. Pesquisas na internet e ninguém dava a palavra definitiva a respeito do que estava acontecendo.  O erro persistindo, a Microsoft falava que o problema era o Web.Config mal formado, e só, se vira. E quando me vi estava apanhando feio no 10º round na luta com a Microsoft, IIS, Genexus, e por ai vai.
Acabei me lembrando que havia aplicado o pattern de Smartdevice em uma transação, e em outra ocasião o GAM. Pior que no outro note isso não estava acontecendo, então qual era o mistério?

Enfim em uma resposta muito despretenciosa em um post no Forum , o Pablo Mazzili deu uma pequena dica a respeito, que existia uma tal de URL Rewrite, seria isso? Poucas palavras e um link: http://www.iis.net/downloads/microsoft/url-rewrite.

Pior que a coisa funcionou!  Ao instalar o monstrinho, de repente tudo voltou a ser colorido.

URL-Rewrite
Este componente do IIS é no final das contas interessante, o efeito direto que ele causa no Genexus ainda não descobri totalmente, me parece que tem a ver com as chamadas REST da Ev2, mas no final das contas trouxe várias coisas interessantes na configuração do servidor, como certas regras de bloqueio e filtro de arquivos, reescrita de Urls ocultando o padrão de passagem de parametros, tornando-a mais facil.

Essa ultima, é bem interessante, pois nos dá uma série de possibilidades de aplicações, quem sabe eu conto uma, que estou fazendo, aqui no genexando. Mas imagine uma situação onde o usuário teria no seu browser algo como http://meusite.com.br/programa.aspx?id=10,valor=29 substituido por algo mais elegante como http://meusite.com.br/programa/10/29 (legal hein!)

Enfim, temos na documentação (meio fraquinha) da Microsoft um conjunto imenso de caracteristicas, providas por esse componente, que nem arrisco a falar mais nada, pois cabe aqui gastar umas horinhas para entender como a coisa funciona. Então, no melhor espirito colaborativo, segue alguns links que tratam da questão.

Para saber mais:
Assim que aprender um pouco mais a respeito disso te aviso!