Desenvolvimento - ASP. NET
ASP.NET - Usando a ferramenta de registro ASPNET_REGIIS.EXE
Recentemente meu Internet Information Service - IIS (O servidor web instalado no Windows XP professional) acusava erro de registro sempre que eu ia criar uma aplicação ASP.NET usando o Visual Studio .NET...
por José Carlos MacorattiRecentemente meu Internet Information Service - IIS (O servidor web instalado no Windows XP professional) acusava erro de registro sempre que eu ia criar uma aplicação ASP.NET usando o Visual Studio .NET. O IIS estava funcionando sem problemas fiz alguns testes de acesso a páginas ASP e ASPX e elas foram processadas. O problema estava no relacionamento entre o ASP.NET e o IIS.
Como o ASP.NET depende de um servidor web para executar suas aplicações nada mais natural ele usar o IIS e portanto o IIS deve estar instalado na máquina de desenvolvimento. O .NET Framework mapeia as extensões e registra o ASP.NET no IIS durante a sua instalação preparando assim o ambiente para o desenvolvimento e execução das aplicações que requerem o serviço do IIS.
Nota - Existem servidores Web alternativos ao IIS que você pode usar para rodar aplicações ASP.NET na sua máquina local. Um deles é o servidor do Webmatrix ; outro é o Cassini (incluido no WebMatrix), um web server escrito em C# (para mais informações visite (http://www.asp.net/) . Você pode também instalar o Apache 2.x for Windows (neste caso você deve parar o IIS).
Como ASP.NET utiliza diversas configurações e arquivos para poder trabalhar e executar aplicações Web deve existir um mapeamento para as extensões destes arquivos de forma que o IIS saiba qual DLL ele deve usar para responder a uma requisição do cliente. Se você abrir o IIS na sua máquina e localizar uma aplicação ASP.NET clicando em cima dela com o botão direito do mouse e escolhendo Propriedades irá ver a janela de Propriedades. Clique no botão - Configuração - e você irá ver todas as extensões mapeadas para o arquivo que deve executá-la. (veja abaixo a sequência das figuras ilustrando o processo para a aplicação web chamada WebApp1)
A aplicação Web no IIS
As propriedades da aplicação web no IIS
O mapeamento do IIS para as extensões da aplicação web
Tudo tem que estar configurado e mapeado pois se houver algum problema com o mapeando devido a uma exclusão de um arquivo indevido ou se você instalar o IIS após ter instalado o Visual Studio NET o IIS não vai executar as aplicações ASP.NET. (No meu caso eu creio que exclui indevidamente um arquivo de configuração ASP.NET.)
Como resolver problemas deste tipo ?
Uma solução é desinstalar e reinstalar o .NET Framework na sua máquina de desenvolvimento ou servidor , certo ?
Esta solução vai resolver o problema mas é uma solução drástica. Existe uma solução mais simples que é usar o a ferramenta ASPNET_REGIIS.EXE.
Descobri esta ferramenta quando estava com o problema no meu IIS e resolvi o problema sem ter que reinstalar o Framework. Você vai encontrá-la na pasta X:\Windows\Microsoft.NET\Framework\sua_versão_do_framework .
Nota : Cada versão do NET Framework possui esta ferramenta associada e se você tiver mais de uma versão do .NET Framework instalado use o ASPNET_REGIIS.EXE a partir do diretório correspondente a versão que deseja corrigir.
Uma forma segura de ter certeza de que esta executando a versão correta da ferramenta (se você tiver mais de um .NET Framework instalado) é Clicar no botão Iniciar do Windows ; a seguir clicar em Todos os Programas ; Selecionar na sequência : Microsoft Visual Studio .NET 2003 > Visual Studio .NET Tools > Visual Studio .NET 2003 CommandPrompt , conforme figura abaixo:
Você deverá ver a janela de prompt do DOS conforme figura abaixo , basta então executar a ferramenta:
A sintaxe é : Aspnet_regiis [opções]
As principais opções possíveis são :
Opção | Descrição da opção |
-i | Instala a versão do ASP.NET associada ao ASPNET_REGIIS.EXE, cria o registro no IIS e atualiza o mapeamento das extensões no IIS de todas as aplicações ASP.NET.( As aplicações web para as quais a versão do ASP.NET for diferente não serão atualizadas.) |
-ir | Instala a versão do ASP.NET associada ao ASPNET_REGIIS.EXE e cria o registro no IIS. O mapeamento não é atualizado com esta opção. |
-u | Desinstala a versão do ASP.NET associada ao ASPNET_REGIIS.EXE. Os mapeamentos para as aplicações ASP.NET serão automaticamente atualizados para a versão mais recente instalada na sua máquina. |
-c | Instala a pasta ASPNET_CLIENT e seus scripts em todos os sites no IIS. Somente os scripts associados à versão do ASPNET_REGIIS.EXE são instalados. |
-ua | Desinstala todas as versões do ASP.NET instaladas na sua máquina.. |
-e | Remove os scripts da pasta ASPNET_CLIENT de todos os sites no IIS associados à versão do ASPNET_REGIIS.EXE. As pastas ASPNET_CLIENT de outras versões do ASP.NET não são alteradas. |
-ea | Remove os scripts da pasta ASPNET_CLIENT de todos os sites no IIS. Esta opção remove os scripts de todas as versões do ASP.NET instaladas na sua máquina. |
-s | Instala o mapeamento das
extensões de todas as versões do ASP.NET somente do endereço especificado. Esta
opção instala o mapeamento de todas as aplicações ASP.NET abaixo da pasta
especificada.(no caso ROOT) Ex.: aspnet_regiis.exe -s W3SVC/1/ROOT |
-lk | Lista todas as pastas e a versão do registro do ASP.NET instalado no seu IIS. |
-lv | Lista o status e o local de instalação de todas as versões do ASP.NET na sua máquina. |
-r | Atualiza todos os mapeamentos das extensões para a versão do ASP.NET associada ao ASPNET_REGIIS.EXE. |
Creio que as opções mais úteis e também as mais usadas sejam as opções -i e -c para sanar erros "misteriosos" que fazem com que sua aplicação ASP.NET não funcione no IIS pois elas reparam o mapeamento e reinstalam os arquivos de scripts nos seus devidos lugares.
No meu caso eu executei a seguinte linha de comando : aspnet_regiis.exe -i e resolvi o meu problema. Espero que isto possa ajudá-lo quando necessário.
Com esta ferramenta você pode então reparar erros de mapeamento entre o IIS e o ASP.NET e gerenciar múltiplas versões do .NET Framework em uma única máquina para sites que rodam em diferentes versões do Framework. O comando para mapear um script específico para sua respectiva versão do ASP.NET é
aspnet_regiis -s W3SVC/1/ROOT/Sua_AplicaçãoWeb
onde:
-s : é parâmetro do caminho do diretório virtual da aplicação Web.
Referências:
Microsoft Knowledge Base Article 318465: "Cannot Debug ASP.NET Web Application" (http://support.microsoft.com/default.aspx?scid=kb;en-us;318465)Microsoft Knowledge Base Article 306005: "Repair IIS Mapping After You Remove and Reinstall IIS" (http://support.microsoft.com/default.aspx?scid=kb;en-us;306005)
Deploying .NET Applications: Lifecycle Guide (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/DALGIssues.asp). Veja a seção "Using Aspnet_regiis.exe to Manage Multiple Versions of the .NET Framework for Your Web Applications."
Até o próximo artigo ASP.NET