Quando tento acessar meu aplicativo da web na porta 8080, recebo o seguinte erro
Solicitação inválida - Nome de host inválido
Erro HTTP 400. O nome de host da solicitação é inválido.
Eu nem sei por onde começar a diagnosticar esse problema
Respostas:
Você verificou se a ligação é IIS? (inetmgr.exe) Pode não estar registrado para aceitar todos os nomes de host no 8080.
Por exemplo, se você configurá-lo para mysite.com:8080 e acessá-lo em localhost: 8080, o IIS obterá a solicitação, mas não terá uma ligação de nome de host para corresponder, portanto, a rejeita.
Fora disso, você deve verificar os logs do IIS (C: \ inetpub \ logs \ wmsvc #) no servidor e ver se está vendo sua solicitação. Então você saberá se é um problema no seu cliente ou no próprio servidor.
FWIW, se você gostaria de permitir apenas solicitações direcionadas a qualquer nome de host / ip, você pode definir sua ligação da seguinte forma:
<binding protocol="http" bindingInformation="*:80:*" />
Eu uso essa ligação para poder carregar uma VM com o IE6 e, em seguida, depurar meu aplicativo.
EDITAR: Ao usar o IIS Express para depurar, o local padrão para o arquivo de configuração desta opção é
C:\Users\{User}\Documents\IISExpress\config\applicationhost.config
Esta página da Microsoft descreve como configurar o acesso ao IIS Server Express de outros computadores na rede local.
Resumindo:
1) em um prompt de comando com privilégios de administrador:
netsh http add urlacl url=http://[your ip address]:8181/ user=everyone
2) No Firewall do Windows com Segurança Avançada, crie uma nova regra de entrada para a porta 8181 para permitir conexões externas
3) Em applicationhost.config, no nó do seu projeto, adicione:
<binding protocol="http" bindingInformation="*:8181:[your ip address]" />
NÃO adicione (como foi sugerido em outra resposta):
<binding protocol="http" bindingInformation="*:8181:*" />
A ligação curinga acima interrompeu meu acesso de http://192.168.1.6:8181/
netsh http delete urlacl url=http://[your ip address]:8181/
Para Visual Studio 2017
e Visual Studio 2015
, as IIS Express
configurações são armazenadas no .vs
diretório oculto e o caminho é algo parecido com este .vs\config\applicationhost.config
, adicionar vinculação como a seguir funcionará
<bindings>
<binding protocol="http" bindingInformation="*:8802:localhost" />
<binding protocol="http" bindingInformation="*:8802:127.0.0.1" />
</bindings>
<bindings> <binding protocol="http" bindingInformation="localhost:8802:*" /> <binding protocol="http" bindingInformation="127.0.0.1:8802:*"/> </bindings>
Não se esqueça de se conectar ao endereço IPv6 também! Eu estava tentando adicionar um site em 127.0.0.1 usando localhost e recebi a solicitação inválida / erro de nome de host inválido. Quando pinguei o localhost, ele resolveu: 1, pois o IPv6 foi habilitado, então eu só tive que adicionar a ligação adicional para corrigir o problema.
Isso resolveu meu problema (desculpe meu inglês ruim):
abra o cmd como administrador e execute o comando (sem os colchetes):
netsh http add urlacl url=http://[ip adress]:[port]/ user=everyone
em documents/iisexpress/config/applicationhost.config
e na pasta raiz do projeto na pasta (oculta): .vs/config/applicationhost.config
você precisa adicionar uma linha à tag "site":
<binding protocol="http" bindingInformation="*:8080:192.xxx.xxx.xxx" />
abra o "gerenciador de serviços de informações da Internet (iis)"
(para encontrá-lo: em pesquisa na barra de tarefas, escreva "Ativar ou desativar recursos do Windows" e abra o resultado e marque a caixa de seleção "serviço de informações da Internet" e instale-o):
abra "Firewall do Windows com segurança avançada",
feito.
Não tenho certeza se esse foi o seu problema, mas para qualquer pessoa que está tentando acessar seu aplicativo da web de sua máquina e tendo este problema:
Certifique-se de que você está se conectando ao 127.0.0.1
(aka localhost
) e não ao seu endereço IP externo.
Seu URL deve ser algo como http://localhost:8181/
ou http://127.0.0.1:8181
e não http://YourExternalIPaddress:8181/
.
Quando você se conecta ao seu endereço IP externo, você se conecta a você pela Internet, como se fosse um estranho (ou um hacker).
No entanto, quando você se conecta ao seu host local, você se conecta localmente como você mesmo e o bloqueio obviamente não é necessário (e evitado completamente).
localhost
, é ao que está se referindo ( 127.0.0.1
). Tudo o que estou dizendo é conectar-se a isso e não ao seu IP visível externamente. Não há dependência do host local, ele é usado apenas como um sinônimo. Vou editar minha resposta para tornar isso mais claro.
Verifique o arquivo de hosts locais (C: \ Windows \ System32 \ drivers \ etc \ hosts por exemplo). No meu caso, eu já havia usado isso para apontar uma URL para uma caixa de desenvolvimento e depois esqueci. Quando reutilizei o mesmo URL, continuei recebendo Bad Request (Invalid Hostname) porque o tráfego estava indo para o servidor errado.
Eu vi o mesmo erro depois de usar msdeploy para copiar o aplicativo para um novo servidor. Descobriu-se que as ligações ainda estavam usando o endereço IP do servidor anterior. Portanto, verifique o endereço IP nas ligações do IIS. (Parece óbvio depois do fato, mas não me ocorreu imediatamente verificar).