Visual Studio를 통해 웹 서비스를 실행하려고했습니다. 다음과 같은 문제에 직면했습니다.
---------------------------
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
---------------------------
나는 작업 관리자를보고 PID (4) 시스템에 의해 사용되며, 그 설명 것으로 나타났습니다 NT Kernel & System.
그래서 내가 막으려 http service
. 모든 종속성 서비스가 중지되었습니다. 하지만 http 서비스를 중지하는 데 문제가 있습니다.
The service is starting or stopping. Please try again later.
그래서 수동으로 서비스를 중지하고 시작하려고했습니다. 그러나 종료 프로세스는 비활성화됩니다. 누구든지이 문제를 도울 수 있다면 도움이 될 것입니다.
답변
에서 https://www.davidsalter.co.uk/unable-to-launch-the-iis-express-web-server-error-0x80070020/
오류 코드 0x80070020
는을 의미하며 ERROR_SHARING_VIOLATION
, IIS Express (또는 IIS)의 경우 수신을 시도하는 포트가 다른 프로세스에서 사용되고 있음을 의미합니다.
사용 netstat
포트를 사용하고있는 응용 프로그램을 찾아 명령을 사용합니다.
netstat -ao | findstr <port_number_to_search_for>
이 a
매개 변수는 netstat에 모든 연결 및 수신 포트를 표시하도록 지시합니다.
이 o
매개 변수는 연결과 관련된 프로세스 ID를 표시하도록 netstat에 지시합니다.
위의 netstat 명령을 실행하면 다음과 같은 출력이 생성됩니다.
C:\>netstat -ao | findstr 4026
TCP 12.0.0.1:4026 cs-pc:4026 LISTENING 9544
표시된 마지막 숫자 (여기서는 9544)가 프로세스 ID입니다.
답변
Windows 10의 Visual Studio 2019에서 프로젝트를 실행하려고 할 때 비슷한 문제가 발생했습니다. 포트가 다른 프로세스에서 사용 중이기 때문에 응용 프로그램을 시작할 수 없습니다. 그러나이 netstat
명령은 어떤 응용 프로그램에서도 포트를 사용하지 않는 것으로 나타났습니다.
2 일 동안 인터넷 검색을 한 후 저에게 적합한 솔루션을 찾았습니다. 사용하려는 포트는 제외 된 포트 범위에 있으며 다음 명령을 실행하여 볼 수 있습니다.
netsh interface ipv4 show excludedportrange protocol=tcp
필자의 경우 이러한 포트를 예약 한 범인은 Windows 및 Hyper-V 용 Docker였습니다.
해결책
Docker를 제거하고 (필요하지 않았으므로) Hyper-V를 비활성화했습니다. Hyper-V를 비활성화하려면 제어판-> 프로그램 및 기능-> Windows 기능 켜기 또는 끄기로 이동합니다. Hyper-V를 선택 해제하고 컴퓨터를 다시 시작합니다.
다시 시작한 후 명령
netsh interface ipv4 show excludedportrange protocol=tcp
은 예약 된 포트가 없음을 표시했습니다.
그런 다음 관리자 권한 명령 줄에서 다음 명령을 실행하여 제외 된 포트 범위에 내 애플리케이션의 포트를 추가했습니다.
netsh int ipv4 add excludedportrange protocol=tcp startport=50403 numberofports=1 store=persistent
그런 다음 Hyper-V를 다시 활성화하고 (필요한 경우 Docker를 다시 설치할 수 있음) 컴퓨터를 다시 시작했습니다.
Hyper-V는 이제 내 응용 프로그램에서 사용하는 포트를 방해하지 않고 포트를 예약했습니다.
예약 된 포트 범위
답변
나는 같은 문제가 있었다. 방금 Visual Studio를 다시 시작했는데 작동했습니다.
답변
나는 같은 문제가 있었다. @Kautsky Lozano가 위에서 언급했듯이 다른 응용 프로그램이 해당 포트를 사용하고 있습니다.
따라서 [Windows OS의 경우] 다음과 같습니다.
- 리소스 모니터 열기 (작업 관리자-> 성능-> 리소스 모니터 열기)
- 네트워크 탭을 클릭 하십시오.
- 그리고 TCP 연결 에서 IIS Express가 사용하는 로컬 포트를 사용하는 응용 프로그램을 찾아서 닫습니다. (제 경우에는 firefox였습니다)
답변
Visual Studio 2012에서 2015로 솔루션을 업그레이드 한 후에도 동일한 문제가 발생했습니다. 여기에 와서 netstat
다른 응용 프로그램이 동일한 포트를 사용하고 있지 않다는 것을 알기 위해 실행했습니다 . 내가 동일하게 매핑 포트와 같은 사이트했다 밝혀 applicationhost.config
에서 Users/<username>/Documents/IISExpress/config
와 applicationhost.config
에서 .vs
폴더 내 솔루션 내부. 업그레이드 직후에도 문제가 시작되지 않았습니다. 어느 날 아침 일관되게 실패하기 시작합니다. 몇 번의 재부팅으로도 문제가 해결되지 않는 것 같습니다.
내 문서에 저장된 사이트에서 충돌하는 사이트를 제거하고 Visual Studio를 다시 시작하면 문제가 해결되었습니다.
답변
netstat에 이미 포트를 사용중인 항목이 표시되지 않는 경우
netstat -ano | findstr <your port number>
포트가 제외되었을 수 있습니다.이 명령을 시도하여 범위가 다른 것에 의해 차단되었는지 확인하십시오.
netsh interface ipv4 show excludedportrange protocol=tcp
여러 포트에 대해 시작 포트에서 범위 차단을 해제 할 수 있습니다 (관리자에게 명령 프롬프트 필요).
netsh int ip delete excludedportrange protocol=tcp numberofports=<number of ports> startport=<start port>
저에게는 이러한 차단을 해제 할 수 없었고 “액세스가 거부되었습니다”라는 메시지가 표시되어 결국 내 사이트에 대한 다른 포트를 선택해야했습니다.
답변
다른 응용 프로그램이 해당 포트를 사용하고 있습니다. 이것은 당신을 도울 수 있습니다