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 Macoratti



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. 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

José Carlos Macoratti

José Carlos Macoratti