Tradicionalmente, uso domínios personalizados com meu servidor de desenvolvimento localhost. Algo ao longo das linhas de:
dev.example.com
dev.api.example.com
Isso me proporcionou muita flexibilidade ao trabalhar com APIs externas, como o Facebook. Isso funcionou muito bem no passado com o Visual Studio Development Server embutido, porque tudo o que eu precisava fazer era adicionar um CNAME aos registros DNS apontados 127.0.0.1
.
No entanto, não consegui fazer isso funcionar com o IIS Express. Tudo o que tentei parece ter falhado. Eu até adicionei a configuração XML correta ao applicationHost.config
arquivo do IIS Express, mas parece não reconhecer as entradas tão válidas quanto uma instalação verdadeira do IIS faria.
<binding protocol="http" bindingInformation="*:1288:dev.example.com" />
Sempre que entro nessa linha e tento solicitar http://dev.example.com:1288
, recebo a seguinte mensagem:
Solicitação incorreta - nome de host inválido
Alguém sabe se estou perdendo algo óbvio? Ou a equipe do IIS Express realmente não tinha a previsão de ver esse tipo de uso?
fonte
Respostas:
Foi isso que funcionou para mim (atualizado para o VS 2013, consulte o histórico de revisões de 2010, para o VS 2015, consulte o seguinte: https://stackoverflow.com/a/32744234/218971 ):
Properties
▶Web
e configure aServers
seção da seguinte maneira:http://localhost
http://dev.example.com
Default Site
para qualquer coisa que não seja a porta:80
, verifique se o Skype não está usando a porta 80 , etc.)Start URL
comohttp://dev.example.com
Abra
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP, Vista e 7) e edite a definição do site no<sites>
bloco de configuração para seguir as seguintes linhas:Se estiver executando o MVC: verifique se
applicationPool
está definido como uma das opções "Integradas" (como "Clr2IntegratedAppPool").hosts
arquivo e adicione a linha127.0.0.1 dev.example.com
.Alguns ótimos conselhos dos comentários:
fonte
Para o Visual Studio 2015, as etapas nas respostas acima se aplicam, mas o
applicationhost.config
arquivo está em um novo local. Na pasta "solução", siga o caminho; isso é confuso se você atualizou e teria DUAS versõesapplicationhost.config
em sua máquina.Dentro dessa pasta, você verá o arquivo applicationhost.config
Como alternativa, você pode simplesmente procurar na pasta da solução o arquivo .config e encontrá-lo dessa maneira.
Eu pessoalmente usei a seguinte configuração:
Com o seguinte no meu arquivo hosts:
E o seguinte no meu arquivo applicationhost.config:
Lembre-se de executar sua instância do visual studio 2015 como administrador! Se você não quiser fazer isso toda vez, recomendo:
Como executar o Visual Studio como administrador por padrão
Espero que isso ajude alguém, tive problemas ao tentar atualizar para o visual studio 2015 e percebi que nenhuma das minhas configurações estava sendo transferida.
fonte
*:49707:
ligação em vez de substituir o padrão,*:49707:localhost
conforme sugerido em muitas outras respostas. E você tem que executar o VS como administrador, de fato (sic!). Obrigado.http://jam.127.0.0.1.xip.io/
se não quiser modificar o arquivo hosts. Além disso, nenhum colaborador precisará modificar o deles. Veja xip.io .Ao usar o Visual Studio 2012 com o IIS Express, a alteração de uma ligação existente não funciona permanentemente. (Pode funcionar até você fechar o VS, mas depois disso, as coisas ficam realmente complicadas.)
A chave é manter a ligação do host local existente e adicionar uma nova ligação após ela.
A menos que você esteja executando como administrador, também precisará executar
netsh add urlacl
(para obter permissões para executar um site host não local como um usuário padrão).Se você deseja permitir qualquer nome de host, o processo completo é o seguinte:
Em um prompt do administrador, execute os seguintes comandos (substituindo o número da porta pelo número da porta que você descobriu em # 1):
Você também pode usar seu nome de usuário (DOMAIN \ USER) em vez de todos, para melhor segurança.
Adicione mais uma ligação com o nome do host desejado (neste caso, *). Por exemplo:
Observe que, se você deseja abrir todos os nomes de host (*), precisará de dois comandos netsh (um para * e outro para localhost). Se você deseja apenas abrir um nome de host específico, não precisa estritamente do segundo comando netsh (localhost); apenas aquele com o seu nome de host específico é suficiente.
fonte
*
resolvido "Serviço Indisponível" para mim.O nome do host inválido indica que o site real que você configurou no arquivo de configuração do IIS Express (provavelmente) não está em execução. O IIS Express não possui um modelo de processo como o IIS.
Para que seu site seja executado, ele precisa ser iniciado explicitamente (abrindo e acessando a partir do webmatrix ou a partir da linha de comando chamando iisexpress.exe (a partir do diretório de instalação) com o parâmetro / site.
Em geral, as etapas para permitir que nomes DNS totalmente qualificados sejam usados para acesso local são Vamos usar o seu exemplo do nome DNS dev.example.com
Configure a ligação do IIS Express para o seu site (por exemplo: Site1) para incluir dev.example.com. Serão necessários privilégios administrativos para usar a ligação. Como alternativa, uma reserva de URL única pode ser feita com http.sys usando
netsh http add urlacl url=http://dev.example.com:<port>/ user=<user_name>
iniciar
iisexpress /site:Site1
ou abrir Site1 no WebMatrixfonte
Bad Request - Invalid Hostname
significa que o nome do host que estou tentando usar não pode ser resolvido porque a equipe do IIS Express, em sua infinita sabedoria, decidiu chamar especificamente "localhost" como o único cabeçalho de host que funcionaria. E VS não vai deixar você executá-lo de outra maneira diferente de "*: 1234: localhost"No meu WebMatrix o IIS Express instalar mudando de
"*:80:localhost"
que"*:80:custom.hostname"
não fez trabalho ( "Bad Hostname", mesmo com adequados etc \ hosts mapeamentos), mas"*:80:"
fez o trabalho - e com nenhum dos passos adicionais requeridos pelas outras respostas aqui. Observe que"*:80:*"
não fará isso; deixe de fora o segundo asterisco.fonte
"*:80:*"
funcionou para mim, mas reiniciei o computador e de repente ele não funcionou até que eu o alterasse"*:80:"
e tudo estivesse bem! Obrigado.Eu estava tentando integrar o endereço IP público ao meu fluxo de trabalho e essas respostas não ajudaram (eu gosto de usar o IDE como o IDE). Mas o exposto acima me levou à solução (depois de duas horas batendo minha cabeça contra uma parede para integrar isso com o Visual Studio 2012 / Windows 8), eis o que acabou funcionando para mim.
applicationhost.config gerado pelo VisualStudio em
C:\Users\usr\Documents\IISExpress\config
Administrator
forma que ele possa se vincular a endereços externos (não ao host local)Administrator
para que ele possa iniciar o processo como administrador, permitindo que a ligação ocorra.O resultado líquido é que você pode navegar
192.168.2.102
no meu caso e testar (por exemplo, em um emulador do Android. Eu realmente espero que isso ajude outra pessoa, pois esse foi definitivamente um processo irritante para mim.Aparentemente, é um recurso de segurança que eu adoraria ver desativado.
fonte
Como Jessa Flint acima , eu não queria editar manualmente .vs \ config \ applicationhost.config porque queria que as alterações persistissem no controle de origem. Eu também não queria ter um arquivo em lotes separado. Estou usando o VS 2015 .
Propriedades do projeto → Criar eventos → Linha de comando do evento de pré-construção:
Apenas certifique-se de alterar o número da porta para a porta desejada.
fonte
A resposta votada é válida .. e essas informações me ajudaram bastante. Eu sei que este tópico já foi discutido antes, mas eu gostaria de adicionar mais informações. As pessoas estão dizendo que você deve "editar manualmente" o arquivo application.config no diretório Users IISExpress / Config. Esse foi um grande problema para mim, porque eu queria distribuir a configuração via controle de origem para vários desenvolvedores.
O que eu descobri é que você pode automatizar a atualização desse arquivo usando o programa "C: \ Arquivos de Programas \ IIS Express \ appcmd.exe". Demorou um pouco para descobrir os parâmetros de controle, mas vou compartilhar minhas descobertas aqui. Essencialmente, você pode criar um arquivo .bat que execute o comando NETSH e o APPCMD.EXE (e talvez troque um arquivo host, se desejar) para facilitar a configuração do cabeçalho do host com o IIS Express.
Seu arquivo bat de instalação ficaria assim:
Também criarei um arquivo bat "Desinstalar" que limpará essas ligações. (Porque muitas vezes estou apenas falsificando o DNS para que eu possa trabalhar no código que é sensível ao nome do host)
Espero que esta informação seja útil para alguém. Levei um pouco para descobrir.
fonte
Seguindo o conselho de Jaro, consegui fazer isso funcionar no Windows XP e no IIS Express (instalado via Web Matrix) com uma pequena modificação e não estava limitado apenas ao host local. É apenas uma questão de definir as ligações corretamente.
%USERPROFILE%\My Documents\IISExpress\config\applicationhost.config
(Windows XP. Vista e 7 caminhos serão semelhantes) e edite a definição do site no<sites>
bloco de configuração, seguindo as seguintes linhas:Se estiver executando o MVC, mantenha o applicationPool definido como uma das opções "Integradas".
fonte
A solução de David é boa. Mas eu encontrei o
<script>alert(document.domain);</script>
na página ainda alerta "localhost" porque o URL do projeto ainda é localhost, mesmo que tenha sido substituído porhttp://dev.example.com
. Outro problema que encontro é que ele me alerta que a porta 80 já está em uso, mesmo que eu tenha desativado o Skype usando o número da porta 80, conforme recomendado por David Murdoch. Então, descobri outra solução que é muito mais fácil:http://localhost:33333/
) e altere-o dehttp://localhost:33333/
ahttp://mydomain:333333/
Nota: Após essa alteração, você deve não clique no botão "Create Virtual Directory" no lado direito da caixa Project Url nem clique no botão Salvar do Visual Studio, pois não será sucedido. Você pode salvar suas configurações após a próxima etapa 3.http://mydomain:333333/
, e<script>alert(document.domain);</script>
na página alertará "meudomínio".Nota: O número da porta listado acima é assumido como 33333. Você precisa alterá-lo para o número da porta definido pelo seu visual studio.
Postagem editada: Hoje tentei com outro nome de domínio e obtive o seguinte erro: Não foi possível iniciar o servidor Web IIS Express. Falha ao registrar o URL ... Acesso negado. (0x80070005) . Saio do IIS Express clicando com o botão direito do mouse no ícone do IIS Express no canto direito da barra de tarefas do Windows, reinicio meu visual studio como administrador e o problema desapareceu.
fonte
Eu tentei tudo acima, nada funcionou. O que resolveu o problema foi adicionar ligações IPv6 no arquivo hosts. No passo 5 da resposta de David Murdochs, adicione duas linhas em vez de uma, ou seja:
Eu descobri isso verificando
$ ping localhost
na linha de comando, que costumava retornar:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Em vez disso, agora ele retorna:
Reply from ::1: time<1ms
Não sei por que, mas, por alguma razão, o IIS Express começou a usar o IPv6 em vez do IPv4.
fonte
Eu estava usando o iisexpress-proxy (do npm) para isso.
https://github.com/icflorescu/iisexpress-proxy
fonte
Deixando isso aqui, caso alguém precise ...
Eu precisava ter domínios personalizados para uma instalação do Wordpress Multisite no IIS Express, mas nada funcionou até executar o Webmatrix / Visual Studio como administrador. Pude ligar subdomínios ao mesmo aplicativo.
Em seguida, acesse http: //whatever.localhost: 12345 / .
fonte