terça-feira, 5 de fevereiro de 2013

Habilitando IIS Express 8.0 para conexões remotas

No decorrer do desenvolvimento de uma aplicação web, muitas vezes precisamos disponibilizar acesso remoto para outros computadores, seja para testes ou para apresentações. O Visual Studio até a versão 2010 tínhamos somente o Cassini, um servidor HTTP integrado ao ASP.NET embutido para fins de desenvolvimento mas que só permite conexões locais e se quiséssemos permitir acesso remoto teríamos que publicar o projeto em uma versão full do IIS. A partir do service pack 1 do Visual Studio 2010 e no Visual Studio 2012, temos a disposição outra opção de servidor web: o IIS Express, que é muito semelhante à versão full, mas muito superior ao Cassini, que permite acesso remoto e suportando inclusive HTTPS/SSL.

Para habilitar o IIS Express, basta clicar com o botão direito sobre a aplicação Web e em seguida clicar em "Use IIS Express".



Ao rodar a aplicação, podemos ver o ícone do IIS no System Tray, e verificamos a porta em que a aplicação está rodando.

Para cada aplicação que é configurada para rodar com IIS Express, uma nova entrada com as configurações da aplicação é inserida no arquivo de configuração do IIS Express, que fica localizado por padrão na pasta de documentos\IIS Express\config\applicationhost.config 

Para habilitar acesso remoto, o HTTP.SYS precisa autorizar o acesso a um determinado endereço e porta. Execute os seguintes passos para isso: Primeiro encerre o IIS Express. Em seguida, abra um prompt de comando com permissões de administrador e digite: 

netsh http add urlacl url=http://ip-do-computador:porta/ user=Todos

Obviamente, substitua com o ip do computador local e a porta em que a aplicação foi configurada, por exemplo, url=http://192.168.0.2:38920.

A mensagem que o comando retorna deve ser: "Reserva de URL adicionada com êxito".

Agora, é necessário alterar o arquivo de configuração applicationhost.config do IIS Express. Abra-o num editor de texto (notepad) e procure as linhas que contém a configuração da aplicação.


<site name="WebApplication1" id="134232">
    <application path="/">
        <virtualDirectory path="/" physicalPath="C:\WebApplication1" />
    </application>
    <bindings>

        <binding protocol="http" bindingInformation="*:38920:localhost" />
    </bindings>
</site>


Em binding protocol, substitua localhost pelo IP do computador.  A linha deve ficar assim:

<binding protocol="http" bindingInformation="*:38920:192.168.0.2" />

Feito isso, é necessário adicionar uma regra no firewall para permitir que o IIS Express utilize a porta ou então desabilitar o firewall temporariamente.

Agora é só iniciar o IIS Express com um comando de linha:

C:\Program Files\IIS Express>iisexpress.exe /site:WebApplication1

Substitua o WebApplication1 com o nome da aplicação (de acordo com o arquivo de configuração do IIS Express).

Se tudo estiver correto, o IIS estará escutando na porta que foi configurada. Basta agora acessar a aplicação pelo endereço IP e porta da sua máquina.

http://192.168.0.2:38920/

Lembre-se de alterar no Visual Studio o endereço da página inicial, removendo a palavra localhost e substituindo com o endereço IP.

Para desautorizar o acesso remoto, basta remover a regra do firewall ou habilitá-lo novamente, caso tenha sido desabilitado. Em seguida, altere o arquivo de configuração, colocando localhost ao invés do ip, e execute o comando a seguir para desautorizar o acesso à nível de HTTP.SYS:

C:\Program Files\IIS Express>netsh http delete urlacl url=http://192.168.0.2:38920/

Reserva de URL excluída com êxito

Nenhum comentário:

Postar um comentário