"Невозможно запустить веб-сервер IIS Express." в 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.
Итак, я попытался остановить и запустить службу вручную. Но процесс End отключен. Будет полезно, если кто-нибудь сможет помочь с этим вопросом.
Ответы
Ответ 1
От 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
указывает netstat отображать идентификатор процесса, связанный с соединением.
Запуск указанной выше команды netstat приведет к выходу, например:
C:\>netstat -ao | findstr 4026
TCP 12.0.0.1:4026 cs-pc:4026 LISTENING 9544
Последний номер (9544 здесь) - это идентификатор процесса.
Ответ 2
У меня была та же проблема. Я только что перезапустил Visual Studio, и он сработал.
Ответ 3
У меня была такая же проблема. Как упоминает @Kautsky Lozano выше. Другое приложение использует этот порт.
Так что [для ОС Windows] просто:
- Open Resource Monitor (Диспетчер задач → Производительность → Монитор открытых ресурсов)
- Перейдите на вкладку Сеть.
- И в TCP Connections найдите приложение, которое использует локальный порт, который использует IIS Express и закрывает его. (это был firefox на моем случае).
Ответ 4
Я столкнулся с той же проблемой после того, как мы обновили решение от Visual Studio 2012 до 2015 года. Я пришел сюда и запустил netstat
только для того, чтобы найти, что никакое другое приложение не использует одни и те же порты. Оказывается, у меня были те же сайты с теми же портами, которые были отображены в applicationhost.config
at Users/<username>/Documents/IISExpress/config
и applicationhost.config
в папке .vs
внутри моего решения. Я должен отметить, что проблема не началась сразу после обновления. В одно утро он просто начинает неудачно. Пара перезагрузки также не помогла решить проблему.
Удаление конфликтующих сайтов из той, что хранится в моих документах и перезагрузка Visual Studio, решила проблему.
Ответ 5
Другое приложение использует этот порт. Это может помочь вам
Ответ 6
У меня была эта проблема при обновлении проекта MVC. Я скопировал более новый MVC.csproj поверх моего существующего файла .csproj, а затем вернулся к полностью работающему проекту. То, что я не рассмотрел, - это существующий номер порта в старом .csproj. Новый проект имел новый номер порта, но поделился названием Project/Assembly. Этого было достаточно, чтобы IIS Express потерял сознание и выбрал это исключение.
Простое копирование старого номера порта из git и изменение URL-адреса IIS Express для его включения в Project Settings было достаточно, чтобы исправить его.
Ответ 7
Самый простой первый проход при этом, не входя в командную консоль, - это просто закрыть все приложения (включая VS), а затем запустить VS самостоятельно и повторить попытку. Вероятно, есть другое приложение, такое как ваш браузер, вызывающий конфликт.
В моем случае Chrome вызвал его и был разрешен, когда закрыл все и перезапустил VS. Я снова открыл Chrome, и все было в порядке.
Полезный материал netstat полезен, но для меня это только если вы не можете делать то, что я предлагаю.
Ответ 8
суммировать все ответы. Есть 2 решения. Оба работали на меня. - Решение № 1 Убить приложение, которое использует тот же порт. - Решение №2. Настройте IIS Express на использование другого порта для вашего проекта.
Решение № 1 (предположим, что порт в сообщении об ошибке был 443) Запустите в командной строке:
netstat -ao | findstr 443
возвращается: TCP 0.0.0.0:443 pe01:0 LISTENING 2904
Последнее число (благодаря @chris-schiffhauer) - это PID для уничтожения. Перейдите в Диспетчер задач → Процессы → [Показать процессы от всех пользователей], Завершите процесс с PID = 2904. В моем случае это был хост VmWare.
Решение № 2 (Предположим, сообщение было: не удалось зарегистрировать URL-адрес " http://localhost: 433/ " для сайта "MyProject.Website0"...). Откройте следующий файл в notedpad++: C:\Users\MY_USER_NAME\Documents\IISExpress\config\applicationhost.config
Найдите в нем строку, содержащую:
<site name="MyProject.Website0" id="...
...
<bindings>
<binding protocol="http" bindingInformation="*:80:localhost" />
<binding protocol="https" bindingInformation="*:443:localhost" />
</bindings>
Либо измените 433
на другое, например 4330
либо удалите конфликтующий <binding.../>
.
Ответ 9
Перейдите в Свойства веб-проекта >> Интернет >> URL проекта >> Измените порт, например: http://localhost: 22345/ => http://localhost: 22346/ Надеюсь, что это поможет!
Ответ 10
У меня просто была эта проблема, хотя netstat не показывал никаких конфликтов.
Следующее исправило это для меня:
- Закрыть Visual Studio
- Откройте Проводник
- Перейдите в папку нарушающего проекта
- Удалить папки obj и bin
- Удалите файл *.user (это, вероятно, необязательно)
- Перезапустите Visual Studio и попробуйте снова
Ответ 11
В моем случае, сделали следующее:
- Удалить сайт из .vs\\config\applicationhost.config
- Удалить сайт из Documents\IISExpress\config\applicationhost.config
- Удалить IISUrl из .csproj
Когда я перезапустил Visual Studio, он назначил проекту совершенно новый номер порта и отлично работал
Ответ 12
Я уже пробовал следующее:
- Перезапущенная Visual Studio
- Проверьте все доступные порты, которые могут прослушивать мой конкретный номер, но он всегда возвращает ноль результатов. Никакие процессы не слушают в моем порту.
-
Я также пытался использовать это, но ноль результатов.
netstat -aon | найти ": 80"
-
Я также пытался использовать, но также вернуть нулевой результат.
netstat -ao | Findstr
Поэтому я удалил этот " Microsoft.VsHub.Server.HttpHostx64.exe ", после чего мой проект успешно запустился и запустился в браузере. Ошибка была исправлена. Я не уверен, почему, но это работает.
Вот скриншот:
![enter image description here]()
Ответ 13
Я смог решить эту проблему, удалив все из тегов <site>
to </site>
в
Users/<username>/Documents/IISExpress/config/applicatiohost.config
file
<sites>
<site>
.
. ===> remove this content including the <site> and </site> tags.
.
</site>
</sites>
Ответ 14
Потратив всего пол дня, пытаясь решить эту проблему, я решил добавить решение, которое в итоге сработало для меня.
TL; DR Если netstat
указывает на то, что проблемный не используется, попробуйте еще несколько в совершенно другом диапазоне
Я сталкивался с этой проблемой раньше, но обычно находил перезапуск Visual Studio, изменение портов (с шагом 1) или перезагрузку. Однако в этом случае ничего из этого не помогло, и netstat
не нашел конфликтный процесс. Я даже переустановил IIS и visual studio и удалил несколько других программ, которые, как я подозревал, могут мешать работе. Казалось, что IIS пытается запустить несколько экземпляров одного и того же сайта.
В конце концов я попытался запустить netstat
без findstr
. Я визуально отсканировал список активных портов и заметил, что хотя те, которые я пробовал, не были перечислены, было несколько процессов, использующих порты в аналогичном диапазоне. Поэтому вместо этого я искал диапазон, который был свободен, выбрал номер порта и, похоже, теперь работает.
Я хотел бы услышать, если кто-нибудь может объяснить, почему это могло сработать?
Ответ 15
Номера портов не совпадают
В моем случае проблема была в моих тегах привязок, найденных в файле конфигурации в .vs в папке моего решения, номера портов не совпадали. Привязки были следующими
<bindings>
<binding protocol="http" bindingInformation=":16433:localhost" />
</bindings>
И в моих настройках URL-адрес был указан как http://localhost:1943/
Поэтому я удалил внутреннюю привязку и запустил мое веб-приложение, затем оно сгенерировало новую привязку с другим номером, затем я скопировал новый сгенерированный порт в мои настройки, после чего ошибка исчезла.