Подтвердить что ты не робот

"Невозможно запустить веб-сервер 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 отключен. Будет полезно, если кто-нибудь сможет помочь с этим вопросом.

4b9b3361

Ответ 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, решила проблему.

Ответ 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 не показывал никаких конфликтов.

Следующее исправило это для меня:

  1. Закрыть Visual Studio
  2. Откройте Проводник
  3. Перейдите в папку нарушающего проекта
  4. Удалить папки obj и bin
  5. Удалите файл *.user (это, вероятно, необязательно)
  6. Перезапустите 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/

Поэтому я удалил внутреннюю привязку и запустил мое веб-приложение, затем оно сгенерировало новую привязку с другим номером, затем я скопировал новый сгенерированный порт в мои настройки, после чего ошибка исчезла.