Como posso ativar solicitações remotas no IIS Express? Scott Guthrie escreveu que isso é possível, mas ele não disse como.
Como posso ativar solicitações remotas no IIS Express? Scott Guthrie escreveu que isso é possível, mas ele não disse como.
Respostas:
Agora, há uma postagem de blog no site da equipe do IIS explicando como habilitar conexões remotas no IIS Express . Aqui está a parte pertinente desse post resumida:
No Vista e Win7, execute o seguinte comando em um prompt administrativo:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Para XP, instale primeiro as Ferramentas de Suporte do Windows XP Service Pack 2. Em seguida, execute o seguinte comando em um prompt administrativo:
httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)
netsh
comando para permitir conexões em qualquer nome de host?
user={PARAM_USER}
estará no seu próprio idioma.
user=todos
vez de user=everyone
.
Você pode precisar fazer três alterações.
.config
arquivo Tipicamente:
$(solutionDir)\.vs\config\applicationhost.config
%userprofile%\My Documents\IISExpress\config\applicationhost.config
Encontre o elemento de ligação do seu site e adicione
<binding protocol="http" bindingInformation="*:8080:*" />
netsh http add urlacl url=http://*:8080/ user=everyone
Onde everyone
é um grupo do Windows. Use aspas duplas para grupos com espaços como "Tout le monde".
Permita o IIS Express através do firewall do Windows.
Iniciar / Firewall do Windows com Segurança Avançada / Regras de Entrada / Nova Regra ...
Programa
%ProgramFiles%\IIS Express\iisexpress.exe
OU Porta 8080 TCP
Agora, quando você iniciar, iisexpress.exe
você verá uma mensagem como
URL "http: // *: 8080 /" registrado com sucesso para o site "hello world" application "/"
users=everyone
para netsh
(segunda etapa) poderá causar o erro 1789. A solução é traduzir everyone
para o nome do grupo correspondente no seu idioma.
Project Url
, se eu inserir um asterisco para o nome do host, ocorrerá um erro. Se eu inserir mais alguma coisa, ele tenta criar um novo diretório virtual. Não está vinculado à entrada em application.config.
bindingInformation="*:8080:hostname"
e 2 url=http://hostname:8080/
e nas propriedades do projeto da Web do Visual Studio na guia Web, defina URL do Projeto como http://hostname:8080/
. Exclua o *
urlacl se você já criou um; não funcionará se você tiver os dois. Por fim, o URL que você acessa no navegador da web deve fazer referência ao nome do host, não ao host local.
<binding protocol="http" bindingInformation="*:8080:localhost" />
Lembro-me de ter os mesmos problemas ao tentar esse fluxo de trabalho há alguns meses.
É por isso que escrevi um utilitário proxy simples especificamente para esse tipo de cenário: https://github.com/icflorescu/iisexpress-proxy .
Usando o IIS Express Proxy , tudo se torna bastante simples - não é necessário “netsh http add urlacl url = vaidesg: 8080 / user = everyone” ou mexer no seu “applicationhost.config”.
Basta emitir isso no prompt de comando:
iisexpress-proxy 8080 to 3000
… E então você pode apontar seus dispositivos remotos para http: // vaidesg: 3000 .
Na maioria das vezes mais simples é melhor.
Nada funcionou para mim até que eu encontrei o iisexpress-proxy .
Abra o prompt de comando como administrador e execute
npm install -g iisexpress-proxy
então
iisexpress-proxy 51123 to 81
supondo que seu projeto do Visual Studio seja aberto no localhost: 51123 e você deseja acessar o endereço IP externo xxxx: 81
Editar: atualmente estou usando ngrok
Como uma nota lateral para isso:
netsh http add urlacl url=http://vaidesg:8080/ user=everyone
Isso funcionará apenas nas versões em inglês do Windows. Se você estiver usando uma versão localizada, precisará substituir "todos" por outra coisa, por exemplo:
Caso contrário, você receberá um erro (falha na criação do SDDL, erro: 1332)
Um bom recurso é Trabalhar com SSL no Tempo de Desenvolvimento é mais fácil com o IISExpress de Scott Hanselman.
O que você procura é a seção Obtendo o IIS Express para servir externamente pela Porta 80
Se você estiver trabalhando com o Visual Studio, siga estas etapas para acessar o IIS-Express sobre endereço IP:
ipconfig
na linha de comando do WindowsVamos para
$(SolutionDir)\.vs\config\applicationHost.config
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>
Adicione:
<binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
com seu endereço IP
Eu o resolvi com a instalação do "Conveyor by Keyoti" no Visual Studio Professional 2015. O transportador gera um endereço REMOTE (seu IP) com uma porta (45455) que permite solicitação externa. Exemplo:
O Transportador permite testar aplicativos da Web de tablets e telefones externos na sua rede ou de emuladores Android (sem http://10.0.2.2:<hostport>
)
As etapas estão no seguinte link:
https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti
Se você tentou a resposta do Coronel Panic, mas não funciona no Visual Studio, tente o seguinte:
Anexe outro <binding />
na sua configuração do IIS Express
<bindings>
<binding protocol="http" bindingInformation="*:8080:localhost" />
<binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>
Por fim, você precisa executar o Visual Studio como Admin
O que me ajudou foi clicar com o botão direito do mouse no ícone 'IISExpress', 'Mostrar todos os aplicativos'. Depois, selecionando o site e vi qual aplicationhost.config ele usa, e a correção foi perfeita.
Foi o que fiz no Windows 10 com o Visual Studio 2015 para habilitar o acesso remoto, tanto com http quanto https:
O primeiro passo é vincular seu aplicativo ao seu endereço IP interno. Execute cmd
-> ipconfig
para obter o endereço. Abra o arquivo /{project folder}/.vs/config/applicationhost.config
e role para baixo até encontrar algo parecido com isto:
<site name="Project.Web" id="2">
<application path="/">
<virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:12345:localhost" />
</bindings>
</site>
Adicione duas novas ligações em bindings
. Você também pode usar HTTPS se desejar:
<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />
Adicione a seguinte regra ao seu firewall, abra um novo cmd
prompt como administrador e execute os seguintes comandos:
netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow
netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow
Agora inicie o Visual Studio como Administrator
. Clique com o botão direito do mouse no arquivo de projeto de projetos da web e selecione Properties
. Vá para a Web
guia e clique em Create Virtual Directory
. Se o Visual Studio não for executado como administrador, isso provavelmente falhará. Agora tudo deve funcionar.
A resposta aceita para esta pergunta é um guia para fazer o IIS Express funcionar com o webmatrix. Achei este guia mais útil ao tentar fazê-lo funcionar com o VS 2010.
Eu apenas segui as etapas 3 e 4 (executando o IIS Express como administrador) e tive que desativar temporariamente meu firewall para fazê-lo funcionar.
Você pode tentar configurar o encaminhamento de porta em vez de modificar a configuração do IIS Express, adicionando novas regras HTTP.sys ou executando o Visual Studio como administrador.
Basicamente, você precisa encaminhar o IP:PORT
site para outra porta gratuita em sua máquina, mas no adaptador de rede externo, não no host local.
O problema é que o IIS Express (pelo menos no Windows 10) se liga ao [::1]:port
significado de ouvir na porta IPv6. Você precisa levar isso em conta.
Aqui está como eu fiz esse trabalho - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html
Espero que ajude.
A maneira mais simples e legal de encontrar foi usar (demora 2 minutos para configurar):
Ele funcionará com qualquer coisa em execução no host local. Basta inscrever-se, executar um pouco flexível e o que você executar no localhost obtém uma URL pública que você pode acessar de qualquer lugar.
Isso é bom para mostrar coisas aos colegas de equipe remotos, sem mexer na configuração do IIS ou nos firewalls. Deseja parar o acesso apenas finalize o executável.
ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ngrok http -host-header=localhost 89230
assumindo que 89230 é sua porta do IIS Express
Você também pode executar várias portas, mesmo em plano gratuito
Estou com alguns problemas ao usar o IIS Express no Windows 8.1 e solicitação externa.
Sigo estas etapas para depurar a solicitação externa:
Está funcionando!
Se você executar o Visual Studio no Admin, poderá adicionar apenas
<binding protocol="http" bindingInformation="*:8080:*" />
ou
<binding protocol="https" bindingInformation="*:8443:*" />
para dentro
%userprofile%\My Documents\IISExpress\config\applicationhost.config
$(SolutionDir).vs\config\applicationHost.config
e também tive que abrir a porta (8443) do aplicativo no firewall do Windows.
Eu tinha um IIS local ativado, então eu apenas criei uma regra de reescrita para minha porta de depuração ... Eu acho que isso é melhor e mais legal que outro método, porque é mais fácil remover uma vez que o desenvolvimento seja concluído ... Aqui está a aparência da reescrita. .
<rewrite>
<rules>
<rule name="ReverseProxyInboundRule1" stopProcessing="true">
<match url="^dev/(.*)" />
<action type="Rewrite" url="http://localhost:47039/{R:1}" />
</rule>
</rules>
</rewrite>
O VS também permite que você desenvolva usando o IIS local diretamente (o que permite conexões remotas), mas, por sua vez, você sempre deve executá-lo como administrador ... Eu não gosto disso.
Resolvi esse problema usando a abordagem de proxy reverso.
Instalei o servidor wamp e usei o recurso proxy reverso simples do servidor web apache.
Adicionei uma nova porta para ouvir o servidor da web Apache (8081). Em seguida, adicionei a configuração de proxy como host virtual para essa porta.
<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>
Eu fiz todas essas etapas e nada me ajudou. E o que eu preciso é apenas para executar meu aplicativo via IIS Express ...
Espero que ajude.
Não foi possível atender às solicitações do iis a outros usuários na minha rede local; tudo o que eu precisava fazer (além do acima) era reiniciar o roteador do BT Hub.
Isso é incrivelmente impressionante e até cobre HTTPS com nomes de domínio bastante:
http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx
As partes realmente impressionantes que não encontrei em nenhum outro lugar no SO, caso o link acima desapareça:
> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
> setupFriendlyHostnameUrl -url:<url>
> deleteFriendlyHostnameUrl -url:<url>
> setupUrl -url:<url>
> deleteUrl -url:<url>
> setupSslUrl -url:<url> -CertHash:<value>
> setupSslUrl -url:<url> -UseSelfSigned
> deleteSslUrl -url:<url>
>
> Examples: 1) Configure "http.sys" and "hosts" file for friendly
> hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl
> -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly hostname "contoso": iisexpressadmincmd
> deleteFriendlyHostnameUrl -url:http://contoso:80/
O utilitário acima registrará o certificado SSL para você! Se você usar a opção -UseSelfSigned, é super fácil.
Se você deseja fazer as coisas da maneira mais difícil, a parte não óbvia é que você precisa informar ao HTTP.SYS qual certificado usar, desta forma:
netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE
Certhash é a "Impressão digital" que você pode obter nas propriedades do certificado no MMC.
Fiz o seguinte e consegui conectar:
1) alterou a ligação de configuração expressa do IIS do host local para '*'
protocolo de ligação = "http" bindingInformation = "*: 8888: *"
2) Regra de entrada definida no firewall para permitir a porta específica para o tipo de protocolo: tcp
3) Adicione o seguinte comando para adicionar a configuração de rede à sua porta: netsh http add urlacl url = http: // *: 8888 / user = everyone
[caixa de diálogo de propriedades do projeto]
Para desenvolvimento usando o VisualStudio 2017 e um projeto de API NetCore:
1) No Cmd-Box: ipconfig / all para determinar o endereço IP
2a) Digite o endereço IP recuperado em Propriedades do projeto-> Guia Debug
2b) Selecione uma porta e anexe-a ao endereço IP da etapa 2a.
3) Adicione uma regra de permissão no firewall para permitir o tráfego TCP de entrada na porta selecionada (meu firewall é acionado com uma caixa de diálogo: "Bloquear ou adicionar regra ao firewall"). Adicionar irá nesse caso fazer o truque.
Desvantagem da solução acima:
1) Se você usar um endereço IP dinâmico, precisará refazer as etapas acima, caso outro endereço IP tenha sido atribuído.
2) O servidor agora possui uma porta aberta que você pode esquecer, mas essa porta aberta permanece um convite para convidados indesejados.