“Não é possível iniciar o servidor da Web IIS Express.” no Visual Studio

105

Tentei executar meu serviço da web por meio do Visual Studio. Eu enfrentei um problema como:

---------------------------
Microsoft Visual Studio
---------------------------
Unable to launch the IIS Express Web server.

Failed to register URL "http://localhost:63591/" for site "xxxxxx" application
"/". Error description: The process cannot access the file because it is being
used by another process. (0x80070020)

---------------------------
OK   
---------------------------

Vi o gerenciador de tarefas e descobri que o PID 4 é usado pelo sistema e sua descrição é NT Kernel & System. Então tentei parar o http service. Todos os serviços de dependência parados. Mas estou enfrentando um problema para interromper o serviço http, como

The service is starting or stopping.  Please try again later.

Então, tentei parar e iniciar o serviço manualmente. Mas o processo de término está desativado. Será útil se alguém puder ajudar com esse problema

Priya
fonte
1
encontrando o problema após atualizar o Windows 10: developersercommunity.visualstudio.com/content/problem/580466/…
Xiao

Respostas:

129

De https://www.davidsalter.co.uk/unable-to-launch-the-iis-express-web-server-error-0x80070020/

Código de erro 0x80070020significa ERROR_SHARING_VIOLATIONque, no caso do IIS Express (ou IIS), significa que a porta que está tentando escutar está sendo usada por outro processo.

Use o netstatcomando para descobrir qual aplicativo está usando a porta.

netstat -ao | findstr <port_number_to_search_for>

O aparâmetro informa ao netstat para exibir todas as conexões e portas de escuta.

O oparâmetro informa ao netstat para exibir o ID do processo associado à conexão.

Executar o comando netstat acima produzirá resultados como:

C:\>netstat -ao | findstr 4026
TCP    12.0.0.1:4026        cs-pc:4026         LISTENING       9544

O último número exibido (9544 aqui) é a ID do processo.

Chris Schiffhauer
fonte
11
Ótima resposta! Você não apenas descreve a solução, mas também inclui o significado dos parâmetros. Eu gostaria que todas as respostas fossem assim!
Christian Payne
8
Isso me ajudou, e descobri que o PID ofensivo era Chrome.exe. Eu reiniciei o Chrome e o problema foi embora.
astrosteve
1
Ótima resposta. Usando isso, descobri que o skype estava escutando nas portas 80 e 443. Eu eliminei o skype e consegui iniciar o iisexpress normalmente, agora mostrando minhas ligações extras para as portas 80 e 443
Alastair
3
executado em uma janela de cmd elevada TASKKILL /PID 2756 /Fsubstitua 2756pelo ID do processo
stackoverfloweth
12
Isso também pode ser consideravelmente mais rápido com a -nopção - ele usa saída "numérica", o que significa que não perde tempo consultando o DNS para resolver endereços IP em nomes de host.
Tullo_x86
45

Tive um problema semelhante ao tentar executar um projeto do Visual Studio 2019 no Windows 10. O aplicativo não pôde ser iniciado porque a porta estava aparentemente sendo usada por outro processo. Porém, o netstatcomando mostrou que a porta não estava sendo usada por nenhum aplicativo.

Depois de passar 2 dias pesquisando no Google, encontrei uma solução que funcionou para mim. A porta que eu estava tentando usar estava no intervalo de portas excluídas, que você pode ver executando o comando:

netsh interface ipv4 show excludedportrange protocol=tcp

Os culpados que reservaram essas portas no meu caso foram Docker para Windows e Hyper-V

A solução

Desinstalei o Docker (já que não precisava) e desativei o Hyper-V. Para desativar o Hyper-V: Vá para: Painel de Controle-> Programas e Recursos-> Ativar ou desativar recursos do Windows. Desmarque Hyper-V e reinicie o computador.

Após o reinício, o comando netsh interface ipv4 show excludedportrange protocol=tcpnão mostrou nenhuma porta reservada.

Em seguida, adicionei a porta do meu aplicativo ao intervalo de portas excluídas, executando o seguinte comando em uma linha de comando elevada:

netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent

Em seguida, reativei o Hyper-V (o Docker pode ser reinstalado se necessário) e reiniciei o computador.

O Hyper-V agora reservou suas portas sem interferir na porta usada pelo meu aplicativo: intervalos de portas reservadas

Philip Trenwith
fonte
Isso funcionou para mim, exceto que eu preciso do Docker, então eu apenas desativei na inicialização em vez de desinstalá-lo.
cderrick
2
Acabei mudando minha porta fora da faixa excluída .. mas ISSO me economizou muito tempo. Obrigado.
Cory
2
Como @Cory, mudei minha porta em vs para algo fora dos intervalos, irrite porque agora eu tenho que alterar os aplicativos de referência toda vez que faço isso, mas é melhor do que reiniciar totalmente.
Nick Rubino
Eu estava procurando por isso há anos . Estou me perguntando se há uma maneira de determinar exatamente qual aplicativo roubou minhas portas? Obrigado.
Simon Mourier
Desativar o Hyper-V e reinicializar corrigiu para mim
Kyle Burkett
30

Eu tive o mesmo problema. Acabei de reiniciar o Visual Studio e funcionou.

MusicAndCode
fonte
1
Meu computador foi reiniciado após as atualizações e o netstat não mostrou nenhum processo usando a porta. Esta foi a única solução que funcionou. Obrigado!
goodies4uall
1
também tive que reiniciar minha máquina
Mahmoud Hboubati
Surpreendentemente, reiniciar o Visual Studio (2017) também funcionou para mim. Obrigado!
Thomas Gassmann
No meu caso, minha caixa do Windows 10 exibiu uma tela azul e tive que reiniciar duas vezes . Outros projetos de site funcionaram bem (porto local diferente), e nenhuma das outras respostas aqui funcionou. Mudar a porta do projeto também não resolveu. Deve haver alguma outra configuração no próprio IIS Express.
Granger
Parece que isso acontece comigo sempre que executo um projeto no VS 2019 com depuração usando F5, depois tento executá-lo sem depuração usando Ctrl + F5, que é quando ele falha. Uma reinicialização corrige isso, embora eu desejasse poder evitar que isso acontecesse em primeiro lugar.
pwhe23
28

Eu tive o mesmo problema. Como @Kautsky Lozano mencionou acima, outro aplicativo está usando essa porta.

Então [para um sistema operacional Windows] apenas:

  • Abra o Monitor de Recursos (Gerenciador de Tarefas -> Desempenho -> Abra o Monitor de Recursos)
  • Clique na guia Rede .
  • E em Conexões TCP encontre o aplicativo que usa a Porta Local que o IIS Express usa e feche-o. (foi o Firefox no meu caso)
Zoti
fonte
Funcionou perfeitamente!
Al Belmondo
12

Eu tive o mesmo problema depois que atualizamos uma solução do Visual Studio 2012 para 2015. Eu vim aqui e corri netstatapenas para descobrir que nenhum outro aplicativo estava usando as mesmas portas. Acontece que eu tinha os mesmos sites com as mesmas portas mapeadas em applicationhost.configat Users/<username>/Documents/IISExpress/confige applicationhost.configna .vspasta dentro da minha solução. Devo observar que o problema também não começou logo após a atualização. Simplesmente começou a falhar consistentemente uma manhã. Algumas reinicializações também não parecem resolver o problema.

Remover os sites em conflito daquele armazenado em meus Documentos e reiniciar o Visual Studio resolveu o problema.

Steve Haselschwerdt
fonte
Isso me ajudou: o applicationhost.configestá na .vs\configpasta em sua pasta de solução.
Erik Oppedijk,
6

Se o netstat não mostrar nada que já esteja usando a porta

netstat -ano | findstr <your port number>

A porta pode ser excluída, tente este comando para ver se o intervalo está bloqueado por outra coisa:

netsh interface ipv4 show excludedportrange protocol=tcp

Você pode tentar desbloquear o intervalo da porta inicial para várias portas (é necessário Prompt de Comando com Administrador):

netsh int ip delete excludedportrange protocol=tcp numberofports=<number of ports> startport=<start port>

Para mim não consegui desbloquear estes, acabei de receber "Acesso negado", então acabei tendo que escolher outra porta para o meu site.

John Leonard
fonte
3

Eu apenas tive esse problema, embora netstat não tenha mostrado nenhum conflito.

O seguinte consertou para mim:

  1. Fechar Visual Studio
  2. Abra o Explorador de Arquivos
  3. Navegue até a pasta do projeto ofensivo
  4. Exclua as pastas obj e bin
  5. Exclua o * .user arquivo (provavelmente é opcional)
  6. Reinicie o Visual Studio e tente novamente
AaronK
fonte
2

Eu tive esse problema ao atualizar um projeto MVC . Copiei o MVC .csproj mais recente sobre meu arquivo .csproj existente e depois trabalhei de volta para um projeto totalmente funcional. O que deixei de considerar é o número da porta existente no antigo .csproj. O novo projeto tinha um novo número de porta, mas compartilhava o nome do projeto / montagem. Isso foi o suficiente para fazer o IIS Express enlouquecer e lançar essa exceção.

Apenas extrair o número da porta antiga do git e alterar a URL do IIS Express para incluí-lo nas Configurações do projeto foi o suficiente para corrigi-lo.

Chris Moschini
fonte
2

A primeira tentativa mais fácil, sem entrar no console de comando, é apenas fechar todos os aplicativos (incluindo o VS) e, em seguida, iniciar o VS sozinho e tentar novamente. Provavelmente, há outro aplicativo como o seu navegador causando o conflito. No meu caso, o Chrome causou isso e foi resolvido ao desligar tudo e reiniciar o VS. Abri o Chrome novamente e estava tudo bem.

O netstat acima é útil, mas para mim é apenas se você não puder fazer o que estou sugerindo.

singleTrackVale
fonte
2

para resumir todas as respostas. Existem 2 soluções. Ambos trabalharam para mim. - Solução # 1 Mate o aplicativo que usa a mesma porta. - Solução # 2 Configure o IIS Express para usar uma porta diferente para o seu projeto.

Solução # 1 (supondo que a porta na mensagem de erro fosse 443) Execute na linha de comando:

netstat -ao | findstr 443

ele retorna: TCP 0.0.0.0:443 pe01:0 LISTENING 2904 O último número (graças a @chris-schiffhauer) é PID para matar. Vá para o Gerenciador de Tarefas -> Processos -> [Mostrar Processos de Todos os usuários], Mate um processo com PID = 2904. No meu caso, era o host VmWare.

Solução # 2 (supondo que a mensagem fosse: Falha ao registrar o URL " http: // localhost: 433 / " para o site "MeuProjeto.Website0" ... ). Abra o seguinte arquivo no notepad ++: C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.configEncontre nele uma linha contendo:

<site name="MyProject.Website0" id="...
...
            <bindings>
                <binding protocol="http" bindingInformation="*:80:localhost" />
                <binding protocol="https" bindingInformation="*:443:localhost" />
            </bindings>

Mude 433para outra coisa, goste 4330ou exclua a <binding.../>tag conflitante .

epóxi
fonte
2

No meu caso, fazer o seguinte funcionou:

  • Exclua o site de .vs \\ config \ applicationhost.config
  • Exclua o site de Documents \ IISExpress \ config \ applicationhost.config
  • Exclua o IISUrl do .csproj

Quando reiniciei o Visual Studio, ele atribuiu ao projeto um número de porta completamente novo e funcionou perfeitamente

djeastm
fonte
2

Os números da porta não coincidem

No meu caso, o problema estava nas minhas Bindings Tags encontradas no arquivo de configuração em .vs na minha pasta de solução, os números das portas não correspondiam. As ligações eram as seguintes

<bindings>
     <binding protocol="http" bindingInformation=":16433:localhost" />
</bindings>

E nas minhas configurações eu tinha o url definido como http://localhost:1943/

Então, o que fiz foi excluir o link interno e executar meu aplicativo da web, em seguida, ele gerou um novo vínculo com um número diferente, copiei a nova porta gerada para minhas configurações e o erro foi embora.

Siphamandla Hero Ngwenya
fonte
Desta vez (já tive esse problema antes, foi uma das muitas causas apresentadas em várias respostas aqui) essa foi a causa.
gburton
2

Depois de atualizar o Windows 10 e / ou Visual Studio 16+, isso pode acontecer devido a um bug interno de que o IISExpress falha ao registrar qualquer site de desenvolvimento porque não aceita mais localhostconexões.

Para resolver o problema, basta registrar novamente a vinculação. Para fazer isso, execute a partir de um shell administrativo o seguinte comando:

netsh http add iplisten ipaddress=:: 
Yennefer
fonte
Isso funcionou para mim, muito obrigado!
Jakub Szumiato
1

Eu estava correção capazes esse problema removendo tudo, desde <site>a </site>tags

Users/<username>/Documents/IISExpress/config/applicatiohost.config Arquivo

<sites>
  <site>
     .
     .   ===> remove this content including the <site> and </site> tags.
     .
  </site>
</sites>
nPcomp
fonte
1

Tendo acabado de perder meio dia tentando consertar esse mesmo problema, achei que deveria adicionar a solução que eventualmente funcionasse para mim.

TL; DR Senetstat indica que o problema não está em uso, tente alguns outros em uma faixa totalmente diferente

Já me deparei com esse problema antes, mas geralmente acho que reiniciar o Visual Studio, mudar as portas (incrementar em 1) ou reiniciar resolve o problema. No entanto, nesta ocasião, nada disso ajudou, enetstat não estava encontrando um processo conflitante. Até reinstalei o IIS e o Visual Studio e removi vários outros programas que suspeitava que pudessem estar interferindo. Parecia que o IIS estava tentando iniciar várias instâncias do mesmo site.

Eventualmente, tentei correr netstatsem findstr. Eu fiz uma varredura visual na lista de portas ativas e percebi que, embora as que eu tentei não estivessem listadas, havia alguns processos usando portas em um intervalo semelhante. Então, em vez disso, procurei um intervalo que estava livre, peguei um número de porta e que parece estar funcionando agora.

Adoraria ouvir se alguém pode explicar por que isso pode ter funcionado.

Phil
fonte
Esta solução também consertou para mim.
Rastográfico de
1

Corri para esse problema no Visual Studio 2019 hoje e passei 3 horas antes de finalmente descobrir o problema. O Visual Studio usa 2 arquivos para rastrear o número da porta SSL, então você precisa corrigir ambos e enquanto o Visual Studio está fechado. Os dois arquivos são o arquivo applicationhost.config que está na pasta .vs \ ??? \ config de sua solução; e também a pasta .csproj.user do seu projeto da web. Edite ambos os arquivos e remova as configurações ofensivas. Talvez até mesmo apague os dois arquivos. Em seguida, abra novamente seu aplicativo no Visual Studio. Boa sorte!

Rob Kraft
fonte
Se sua solução contiver um site simples e antigo (não um aplicativo da web), os números das portas também estão no arquivo de solução .sln
nuander
1
  1. Fechar estúdio visual
  2. excluir pasta ".vs"
  3. Tente alterar a porta "localhost: 8080"

Funcionou para mim

Ömer Güngör
fonte
1

Segui as instruções do @Zoti e usei o Monitor de recursos para encontrar a porta em questão.

Acontece que o Outlook foi atribuído aleatoriamente à porta para seu canal de comunicação. Moral da história, pode ser absolutamente qualquer coisa.

Greg B
fonte
1

O motivo desse erro é que você forneceu o número de porta incorreto ao seu aplicativo.

just use http ports for your application to run

use a porta próxima ao número 8080, ou seja:

localhost: 8090

para alterar a porta para seu aplicativo no visual-Studio

goto project properties > web > Server > ProjectUrl

Talha Rafique
fonte
0

Já tentei o seguinte:

  • Visual Studio reiniciado
  • Verifique todas as portas disponíveis que podem estar ouvindo meu número específico, mas sempre retorna resultados zero. Nenhum processo está escutando em minha porta.
  • Eu também tentei usar isso, mas nenhum resultado.

    netstat -aon | encontre ": 80"

  • Eu também tentei usar, mas também retornei zero resultados.

    netstat -ao | findstr

Então o que fiz foi deletar este " Microsoft.VsHub.Server.HttpHostx64.exe ", então meu projeto foi iniciado com sucesso e inicializado no navegador. O erro foi corrigido. Não sei por que, mas funciona.

Aqui está a imagem:

insira a descrição da imagem aqui

Willy David Jr
fonte
0

Eu tive o mesmo problema, mas ele foi resolvido quando reiniciei usando privilégios de administrador. (Pode ter sido apenas o reinício)

Vaibhav Garg
fonte
0

Tive o mesmo problema hoje e nada do que achei na internet funcionou. Eu uso a porta 2057 há anos, mas de repente ela não funcionou mais. Mudá-lo para outro número baixo como 2058 gerou a mesma mensagem de erro, mas quando mudei para 20057, tudo funcionou novamente. Talvez algo tenha mudado na maneira como os números de porta inferiores são tratados.

Bogi lenvig
fonte