Не удается запустить сайт в IIS (используется другим процессом)

96

Когда я пытаюсь запустить сайт в IIS, он говорит:

процесс не может получить доступ к файлу, потому что он используется другим процессом

Я поискал в Google и обнаружил, что другой сайт мог использовать порт 80, но в MyIIS я вижу, что только этот сайт использует порт 80. Что еще может использовать порт 80 или есть другая проблема?

hichris123
источник
перезапустите систему один раз, затем попробуйте.
عثمان غني
Я сделал это, но снова возникла
1
Попробуйте настроить IIS для работы на другом порту. У вас может быть другой сервер, работающий на вашем компьютере. Любой экземпляр apache? Есть несколько червей, которые открывают порт 80 как бэкдор на зараженных компьютерах.
nunespascal
Этот текст ошибки, безусловно, бесполезен, но если вы проверите журналы просмотра событий, он даст вам некоторый намек на то, что произошла ошибка при привязке к порту 8080 (используется веб-сайтом в моем IIS). На мои окна 10 коробки он регистрируется две ошибки из IIS-W3SVC и HttpEventисточника. Текст второго журнала событий - Unable to bind to the underlying transport for [::]:8080. The IP Listen-Only list may contain a reference to an interface which may not exist on this machine. The data field contains the error number.. Порт 8080 использовался службой Oracle. Я изменил порт, используемый моим веб-сайтом, на 8081.
RBT,

Ответы:

176

Проверьте с помощью netstat -aonили netstat -aon | findstr 0.0:80в командной строке, чтобы узнать, какой идентификатор процесса ПРОСЛУШАЕТ порт: 80, а затем следите за этим идентификатором процесса (PID) в диспетчере задач с помощью view-> select columns-> process id selected . Завершите этот процесс, перезапустите IIS, и все готово. ( Примечание: если у вас установлен Skype , попробуйте сначала выйти из этого процесса. )

В современном диспетчере задач вам нужно перейти на вкладку « Подробности », чтобы найти PID. Или, как упомянул @Nikita G в комментариях, вы можете использовать эту команду, чтобы найти задачу из командной строки:

tasklist /FI "PID eq 123"

Примечание: измените 123PID, полученный из первой команды.

Манодж Пурохит
источник
11
Спасибо также за комментарий в Skype.
Кейт
Skype работал на порту 80, и мои веб-сайты также настроены на порт 80, поэтому я решил эту проблему, выйдя из Skype, а затем после этого я изменил настройки Skype для работы на порту 8080. (Не обязательно запускать IIS)
Umar Shafeeq
1
Это весело, когда продукты Microsoft борются ... до тех пор, пока вам не придется перезагружать компьютер, когда вы понимаете, что это произошло снова по какой-то неизвестной причине, и у вас нет энергии, чтобы выяснить, что вызывает это (до сих пор). Серьезно, это очень раздражает.
andyface
10
Вот способ сделать это немного проще. Показать только те элементы, которые прослушивают порт 80 : netstat -aon | findstr 0.0:80. И тогда при условии , что возвращает PID 123, выполните следующие действия, чтобы увидеть , какой процесс , который: tasklist /FI "PID eq 123".
Никита Г.
1
Для меня это была OracleServiceXEслужба, которая съела порт 8080, к которому пытался привязаться новый веб-сайт на моем сервере IIIS.
RBT
35

Это происходит потому, что другой процесс использует порт 80, это может быть приложение чата на вашем ПК, такое как Skype.

Сначала измените порт веб-сайта по умолчанию, который был 80, на какой-то неиспользуемый порт (например, 8087). Для этого щелкните приложение правой кнопкой мыши и выберите «Изменить привязку».

введите описание изображения здесь

введите описание изображения здесь

После смены порта снова перезапустите. Теперь вы можете определить, какой процесс блокирует порт IIS 80. Чтобы проверить это, используйте команду netstat, которая отображает сведения о порте вместе с идентификатором процесса.

Равиндра Багале
источник
6
Skype был моей проблемой
nbushnell
то же самое здесь, Skype использовал порт 80. Отключите его в разделе Параметры -> Дополнительно -> Соединение -> «Использовать порт 80 и 442 для дополнительных ...»
Вагнер да Силва
25

Выйдите из Skype и попробуйте еще раз. У меня возникла та же проблема, и я только что вышел из Skype, а затем сбросил свой IIS. У меня это сработало.

Овайс Мумтаз
источник
2
Вы можете изменить порт, который использует Skype, в настройках
3ventic,
10

Вы также можете запустить эту команду, чтобы узнать, какое приложение или служба использует порт, а затем отследить его в диспетчере задач (при условии, что это не служба агента веб-развертывания).

netstat -o -n -a | findstr 0.0: 80

Затем откройте диспетчер задач, перейдите в раздел «Процессы», установите флажок «Показать процессы для всех пользователей», а затем нажмите меню «Просмотр» и перейдите в столбцы, добавьте столбец PID.

Сопоставьте идентификатор процесса из команды netstat с идентификатором PID в диспетчере задач, и вы найдете службу или приложение, использующее порт.

Bikey
источник
2
В случае , если вы хотите , чтобы избежать открытия менеджер задач, выполните следующую команду сразу после чтобы увидеть , какой процесс , который: tasklist /FI "PID eq <PID from netstat (without brackets)>".
Никита Г.
2

Как уже говорили другие, что-то еще может использовать порт 80 или 443. Для меня это был VMWare Workstation Server, но проверьте другие ответы о том, как использовать netstat.

растворимая рыба
источник
+1 за упоминание порта 443. Я использовал netstatдля проверки порта 80 и ничего не показал. Затем вы упомянули порт 443, и вот он.
jtate
1

Я думаю, что эта ссылка дает довольно хорошее объяснение и решение этой проблемы http://support.microsoft.com/KB/890015

Большую часть времени; это вызвано одной из двух причин: 1) порт 80 используется чем-то другим, и, как предлагали другие, вы можете использовать netstat -o -n -a | findstr 0.0: 80, чтобы проверить, так ли это. Если да, то завершите процесс из диспетчера задач (отметьте Показать процессы от всех пользователей)

2) если порт 80 не используется, вторая причина - потенциально недопустимый IP-адрес в ListenOnlyList, указанном в разделе реестра HTTP-> Parameters. Если вы перейдете по ссылке, чтобы установить ключ вручную или на самом деле вы можете использовать (xp и server 2003) httpcfg delete iplisten -i ipaddressдля удаления недопустимого IP-адреса. После редактирования IP-адреса необходимо перезапустить http!

stt106
источник
@bummi спасибо за комментарий. Я добавил немного больше деталей.
stt106
0

В моем случае это была « Sync Share Service » (SyncShareSvc), которая работала и использовала порт 80. Однако netstat показал 80 как свободный. Я мог бы заставить сайт работать на другом порту, но не на 80. Если я добавлю имя хоста, IIS позволит мне запустить сайт, но мне будет предложено ввести дайджест-аутентификацию при просмотре локального хоста (или любого имени хоста, которое я добавлено). В IIS были включены только анонимный доступ и проверка подлинности с помощью форм ...

Я также обнаружил, что после остановки IIS http://localhostвсе еще предлагал мне дайджест-аутентификацию.

Решение - в моем случае - было удалить службы файлов и хранилищ> Файлы и службы iSCSI> « Рабочие папки » из установленных служб (требуется перезапуск).

После удаления службы «Рабочие папки» и перезапуска IIS работал должным образом.

Адам Эй
источник
0

В моем случае после установки RD Web Access исходные веб-сайты по умолчанию не запускались. Удалена роль веб-доступа к удаленным рабочим столам. Удаленная привязка порта 443 решила проблему.

Ник
источник
0

В большинстве случаев, когда это происходит веб-разработчиками, причиной является apache, поэтому, если вы перейдете в файл конфигурации из apache! откройте его и выполните поиск с помощью ctrl + f до 80 и измените ip, который вы увидите, на 8080, а предложение ниже от 80 до 8080, и вам нужно настроить это в вашем xampp или программе, которую вы используете в настоящее время

Надеюсь, я помогу вам, ребята

Арне Схоутен
источник
Речь идет о IIS, а не об apache.
К. Хеллинг
1
Да, но эти 2 программы мешают друг другу, так что, может быть, я помогу кому-то, у кого такая же проблема, как и у меня
Арне
0

Чтобы получить более значимую информацию, один из способов - также получить информацию о владельце при выпуске, netstatчтобы вы знали, какой процесс использует либо 80 (привязка http по умолчанию), либо 443 (если привязка https определена):

 netstat -ab

В моем случае виновником была vmware:

TCP 0.0.0.0:443 Имя компьютера: 0 ПРОСЛУШИВАНИЕ
[vmware-hostd.exe]

netstat можно передать в find для поиска портов 80 или 443 (например find ":443"), но именно эти активные соединения будут отображаться в начале списка, так как их легко увидеть.

Алексей
источник