Configure o IIS Express para acesso externo ao projeto VS2010

103

Estou desenvolvendo um projeto no VS2010 e consigo visualizar meu site localmente via IIS Express. Eu gostaria de habilitar o acesso externo pela rede.

Todas as minhas pesquisas me enviaram para esta entrada do blog: http://blogs.iis.net/vaidyg/archive/2010/07/29/serving-external-traffic-with-webmatrix-beta.aspx , que é útil, mas ajuda não parecem mostrar como configurar vínculos para um projeto iniciado no visual studio (não consigo encontrar a tela nas capturas de tela e editei as informações de vinculação em applicationhost.config, mas não parecem refletir quando executo o site em estúdio visual).

ranzinza
fonte
10
leia a postagem do blog de Scott Hanselman hanselman.com/blog/…
balexandre
possível duplicata do IIS Express habilitar solicitação externa
abatishchev

Respostas:

136

1 Depois de editar o arquivo applicationhost.config (localizado na pasta IISExpress em seus documentos), as ligações do seu site devem ficar assim:

<bindings>
  <binding protocol="http" bindingInformation="*:8080:*" />
</bindings>

As ligações consistem em três partes. Em primeiro lugar, um endereço IP ou lista ou, como neste caso, um curinga. Em segundo lugar, o número da porta e, em terceiro lugar, um nome de host, ou lista, ou curinga (para filtrar por Hostcabeçalho). Para fins de desenvolvimento, um curinga é mais adequado aqui, pois você provavelmente usará uma porta exclusiva.

2 Como você está usando vinculação não localhost, são necessárias permissões adicionais. Você pode executar o VS como administrador ou, de preferência, deve adicionar ACLs de URL para conceder as permissões necessárias. No exemplo abaixo, a permissão é dada a todos, mas você pode usar seu próprio nome de usuário.

Observação: o urlacldeve corresponder exatamente à ligação. Portanto, um urlaclfor http://*:8080permitirá uma ligação de *:8080:*, mas não uma ligação de *:8080:localhost, embora o último seja um subconjunto do primeiro. isso significa que se, em vez de usar um caractere curinga, você listar cabeçalhos de host applicationhost.config, deverá adicionar uma correspondência urlaclpara cada um.

As etapas para configurar o HTTP.sys para tráfego externo são semelhantes à configuração de um site para usar uma porta reservada. No Windows 7 ou Windows Vista, em um prompt de comando elevado, execute o seguinte comando:

netsh http add urlacl url=http://*:8080/ user=DOMAIN\username

No Windows XP, execute o seguinte comando em um prompt de comando elevado:

httpcfg set urlacl /u http://*:8080/ /a D:(A;;GX;;;WD)

Nota 2 Se executar o VS como administrador ou adicionar entradas ACL não resolver o problema, execute o IIS Express na linha de comando e verifique se há alguma mensagem de falha de registro de ligação. Para iniciar a partir da linha de comando, dê este comando:

iisexpress.exe /site:"your-site-name"

3 Finalmente, você precisará de entradas de firewall adequadas. Para isso, é mais fácil usar o console "Firewall do Windows com Segurança Avançada".

Em "Regras de entrada", escolha "Nova regra ...".

  • O tipo de regra é "Personalizado".
  • Programa é Serviços-> Personalizar ...-> Aplicar apenas a serviços. (Embora o IIS Express não seja um serviço, o multiplexador HTTP que ele usa é).
  • O protocolo é TCP
  • Portas específicas: Liste todas as portas para todas as ligações do IIS Express. Você pode voltar a esta regra e adicionar portas a qualquer momento. (Se isso se tornar cansativo, você pode adicionar um intervalo 40000-65534que cobre todo o intervalo usado pelo Visual Studio, mas esteja ciente de que isso é menos seguro).
  • A ação é "Permitir a conexão"
  • O perfil será um dos seguintes. Em caso de dúvida, escolha "Domínio + privado".
    • "Domínio", se o seu for um desktop corporativo e só funcionará no domínio local
    • "Domínio + Privado" Se a sua máquina for uma máquina de desenvolvimento privada em um ambiente não corporativo ou um laptop corporativo que também precisa funcionar em casa.
    • “Domínio, Privado e Público”, se necessitar de fazer demonstrações em redes não privadas.
  • O nome deve ser algo como "IIS Express Dev Server"
vikomall
fonte
12
@ user578913 Então, finalmente encontrei o arquivo applicationhost.config correto abrindo a barra de tarefas do IIS Express em execução e clicando no link para o arquivo de configuração. Defini a porta para 1063 na segunda linha, pois é para isso que a primeira linha foi configurada. Executou sua linha de comando e tudo parecia bem. Quando vou para nome-da -máquina ou nome-da -máquina: 1063 de outra máquina na rede, ainda não recebo nada.
rabugento
15
ok, como o Visual Studio atribui uma porta (diferente de 8080), o Firewall do Windows a estava bloqueando. Depois de desligar o Firewall do Windows (sem dúvida, poderia apenas abrir a porta, mas estou em uma rede segura) e usar o IP da minha máquina em vez do nome da máquina, funcionou. Obrigado. Eu votaria, mas ainda não tenho o representante = (
ranzinza
3
Sim, se o Firewall do Windows precisa estar ativado, você adiciona explicitamente a porta TCP 8080 (ou o que você usa). No Windows 7, inicialmente tentei atribuir a porta ao "IIS Express Worker Process". Mas não funcionou. Tive que usar a opção "Nova Regra" e permitir a porta 8080. A escolha do perfil (Domínio, Privado, Público) também é importante.
Gautam Jain
2
Observação para mim mesmo: Se você receber Acesso negado, execute o Visual Studio como Admin .
nVentimiglia,
3
No VS2015, o local do arquivo era C:\<Path\To\Solution>\.vs\config\applicationhost.config. (Obrigado, @Talon)
ranzinza
29

Passei horas com esse problema também, tentando navegar de meu Android Xoom para minha máquina de desenvolvimento win7, para poder testar um novo aplicativo da web asp.net que criei. Tudo o que fiz foi alterar o applicationhost.config do IISExpress de usar o PC HostName para o endereço IP atual do PC, para meu novo site.

<binding protocol="http" bindingInformation="*:80:dev-Lee" />

para

<binding protocol="http" bindingInformation="*:80:192.168.1.102" /> 

Depois de fazer isso e reiniciar o IISExpress ... consegui navegar até minha máquina dev-Lee e ver meu aplicativo no Xoom!

Leester39
fonte
10
Tudo o que consigo com todas essas soluções é um erro 400 - Solicitação inválida. Alguma sugestão?
Krumelur
2
@Krumelur, certifique-se de editar o arquivo applicationhost.config correto. aquele na pasta Meus Documentos.
Codler
14

Podemos adicionar vários endereços de ligação editando applicationhost.config do IIS Express

<bindings>
   <binding protocol="http" bindingInformation="*:62217:localhost" />
   <binding protocol="http" bindingInformation="*:62217:192.168.0.5" />
   <binding protocol="http" bindingInformation="*:62218:192.168.0.5" />
</bindings>

Agora podemos acessar o site da lan usando o endereço IP.

Acessando sites locais da Lan usando IIS Express

Nasir Mahmood
fonte
6

O Visual Studio 2013 SP1 e superior (2015) inclui a configuração "Aplicar configurações do servidor a todos os usuários (armazenar no arquivo de projeto)". Isso é ativado por padrão. Quando habilitado, o Visual Studio inicia o IIS Express com argumentos de linha de comando que o fazem usar um arquivo de configuração diferente. A localização do arquivo 'applicationhost.config' está no diretório do projeto em '.vs \ config'.

Jon Eldridge
fonte
1
Sim, esse era o problema no meu caso - tentei editar um arquivo incorreto. Na verdade, você pode ver onde está a configuração do seu aplicativo IIS Express clicando no ícone da bandeja, listando todos os aplicativos e selecionando o seu. O caminho para o arquivo de configuração será escrito abaixo. Meu estava em .vs \ config
evilkos
1
Sim, o mesmo para mim. Muito obrigado.
Vas
1

Se você estiver trabalhando com o Visual Studio, siga estas etapas para acessar o IIS-Express pelo endereço IP:

  1. Obtenha seu endereço IP de host: ipconfigna linha de comando do Windows
  2. GoTo $ (SolutionDir) .vs \ config \ applicationHost.config
  3. Encontrar
    <site name="WebApplication3" id="2"> <application path="/" applicationPool="Clr4IntegratedAppPool"> <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" /> </application> <bindings> <binding protocol="http" bindingInformation="*:62549:localhost" /> </bindings> </site>
  4. Adicione: <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    com o seu endereço IP
  5. Execute seu Visual Studio com direitos de administrador e tudo deve funcionar
  6. Procure alguns problemas de firewall se tentar se conectar remotamente

A dica é que o Visual Studio tem seu próprio arquivo applicationHost.config!

Daniel Eisenreich
fonte
0

Tive muitos problemas para fazer isso funcionar no Visual Studio 2012, fui de erros 404 para 503 erros. Eventualmente, o que funcionou para mim foi limpar todas as configurações relacionadas na configuração do IIS Express ...

"\Program Files (x86)\IIS Express\appcmd.exe" list site
"\Program Files (x86)\IIS Express\appcmd.exe" delete site xxx
"\Program Files (x86)\IIS Express\appcmd.exe" delete site yyy

Em seguida, criei um novo diretório virtual a partir da página de propriedades em meu projeto da web no VS, mas antes de criar o diretório virtual, alterei o nome do host para http: // myhost: 80 / e cliquei no botão criar diretório virtual. Anteriormente, eu recebia erros dizendo que o nome do host deve ser 'localhost', mas dessa vez não aconteceu. E depois disso, funcionou.

Resumindo, primeiro limpe a configuração existente e comece novamente.

stu
fonte
-2

Se o seu domínio externo for "name.mydyndns.com", você precisará escrever:

<binding protocol="http" bindingInformation="*:name.mydyndns.com" />

Isso funciona no Windows 2003 Server e no IIS 7.5 Express.

Juan
fonte
-3

Captura de tela

no pool de aplicativos do IIS, defina "Ativar aplicativos de 32 bits" como "verdadeiro".

Mürsel Yıldırım
fonte
Não tenho certeza se isso está realmente respondendo à questão. Você queria postar isso em outra pergunta?
ckittel