ASP.NET 5 MVC: не вдається підключитися до веб-сервера 'IIS Express'


190

Що я роблю:

Видалення applicationhost.config, розташоване в Documents\IISExpress\config, не змінює повідомлення про помилку. (Там же IISExpressпапка , в program filesі program files (x86).)

Щось я помітив, і я не знаю, чи це проблема:

Посиланий файл 'lib / jquery-validation / jquery.validate.js' не знайдено.

У мене є смітник з rawcap, але я там мало помічаю. Дещо з того, що там було:

"Framework": {"FrameworkName": "DNXCore, версія = v5.0", "FriendlyName": "DNX Core 5.0", "ShortName": "dnxcore50", "RedistListPath": null}

Я не помічаю проблеми, але у мене є дані мережі, якщо це може допомогти з'ясувати, чому я не можу підключитися до веб-сервера. Я отримую RST,ACKнегайно, тому я здогадуюсь, що порт закритий, і що б це не було, веб-сервер не налаштовується.

Детальніше про цю проблему: помилка 800700c1 від / trace: error

Я спробував:

  • видалення applicationhost.config (та зміна номера порту)
  • працює візуальна студія в якості адміністратора
  • видалення папки IISExpress в Документах (змінює повідомлення про помилку, поки папка не буде перевстановлена)
  • увімкнення та ввімкнення ssl, копіювання URL-адреси для запуску. (Примітка: я не використовую ssl)
  • очищення всіх помилок sfc / scannow
  • починаючи iisexpress з версією x86 та 64-бітної версії

1
Чи допомагає це? stackoverflow.com/questions/15873126/… . Або зміна порту? stackoverflow.com/questions/23502327 / ...
mariocatch

1
спробуйте, коли ви відкриєте візуальну студію правою кнопкою миші та відкрийте її як адміністратор ..
Hazem Torab

Я намагаюся всі пропозиції, які мені дають люди, навіть якщо я раніше намагався.
Сарек

чи можете ви відкрити новий проект перевірки, чи працює він? Перезапустити ПК? Переміщення проекту в інший каталог
Себастьян 506563

1
Дякую, але це також не вийшло.
Сарек

Відповіді:


254

Після встановлення оновлення 2 для Visual Studio 2015 я почав отримувати ту ж помилку. Я спробував усе вище, не пощастивши. Однак я знайшов рішення, яке працює для мене:

  1. Видаліть файл YourSolutionFolder \ .vs \ config \ applicationhost.config (зверніть увагу: .vs - прихована папка)
  2. Відкрийте Visual Studio, клацніть правою кнопкою миші веб-сайт> Властивості> вкладка Налагодження> Налаштування веб-сервера> URL-адреса програми - змініть номер порту.

Людина, моя помилка повернулася, знайшла це також на іншому сайті, але вона просто продовжує видавати прокляту помилку. Здивляє мене. Я б запустив веб-консоль, але у неї немає спостерігача, так що я можу просто ctrl + s, оновити.
Рене Сакерс

Омг, це працює. Я видалив папку IISExpress у своїх документах, потім я видалив цей файл, потім я почав отримувати цю помилку, але прийнятою відповіддю було рішення: stackoverflow.com/questions/33166403/… і тепер це працює: |
Рене Сакерс

3
Для мене це було.vs\config\<MyProject>\config\applicationhost.config
laggingreflex

2
де ви бачите, web siteщо потрібно клацнути правою кнопкою миші?
CodyBugstein

13
Для проекту Net Core 2.2 - Після МАСИВНОЇ боротьби та спроб усе, починаючи з видалення папки .vs, видалення конфігурацій IIS Express, зміни номерів портів, зміни прив’язок та запуску VS як адміністратора, Я КОНТАКТУ вирішив проблему шляхом 1. закриття VS, 2. видалення launchSettings.json3. відкриття VS, яке знову генерується launchSettings.json. Не видно було, що файл був пошкодженим чи неправильним, або навіть коли він змінений, викликаючи збій.
Кінтон Сміт

189

Вийдіть з VS та видаліть файл (project) .vs \ applicationhost.config. Перезапустити VS. Він повинен почати працювати.


19
Це працювало для мене у VS2017, не змінюючи порт.
mlienau

4
Після цього мені потрібно було запустити Visual Studio як адміністратор, і працював, дякую!
DigaoParceiro

5
Особливо для мене важливий ПРАВИЛ ЯК АДМІНІСТРАТОР. (хоча у мене є Asp.net Core 2.0 VS2017.
Bart Mensfort


9
Перезапуск VS2017 не виправив, але перезапуск комп'ютера виправив це для мене. Не потрібно було змінювати порт або видаляти папку. Сподіваюся, це допомагає іншим.
Тонмой

32

Спробуйте використовувати інший порт. Я просто створив новий проект Core 1.0 RC1 і отримав таку ж помилку.

  • Клацніть правою кнопкою миші веб-проект
  • Вкладка налагодження
  • Якщо увімкнути Увімкнути SSL і знову ввімкнути, він повинен створити новий випадковий порт
  • Скопіюйте URL-адресу SSL та вставте у поле запуску URL-адреси
  • Запустіть проект

Працював для мене (TM).

Відповідь: https://stackoverflow.com/a/28650554/134761

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


1
Він працював, але лише тоді, коли я використовував порт 60000. порт 6000 повернув помилку: небезпечний порт.
EKanadily

Не працювало у Visual Studio 2019 - він просто використовував один і той же порт кожного разу.
EJoshuaS

@ EJoshuaS-ReinstateMonica Я вважаю, що це сильно змінилося. Погляньте, як Startupналаштовано ваш клас та які у appsettings.jsonвас файли. Існує також Properties\launchSettings.jsonзапуск різних профілів на місцевому рівні. docs.microsoft.com/en-us/aspnet/core/fundamentals / ... dejanstojanovic.net/aspnet/2018/december / ...
angularsen

27

Я зіткнувся з цією проблемою в .net core 2.0, коли я оновлював номер порту свого проекту.

Мені вдалося розібратися з проблемою за два етапи:

  • КРОК 1: ВИДАЛИТИ .vs папку, яка прихована всередині основної папки рішення. (закрийте візуальну студію до цього), тоді, коли ви знову почнете візуальну студію, ця папка та файл (applicationhost.config) всередині неї автоматично створиться візуальною студією.
  • КРОК 2: Для декількох проектів запуску , якщо ви все ще стикаєтеся з проблемою, то один за одним запустіть проект як запуску, а потім запустіть як кілька запуску проектів.

Рішення спрацювало. Дякую :) Як щодо ВІДКРИТТЯ папку .git?
krunal.cp

24

У мене ця проблема була в .net core 2.1, візуальна студія версії 15.9.6. Коли я видалив папку .vs, я знову відкрив візуальну студію, і проблема все ще була. Рішення, яке працювало для мене нижче:

  1. Видалити папку .vs (це прихована папка).
  2. Перезавантажте комп'ютер.

Інші рішення:

  • Закрийте Visual Studio, видаліть папки бінь та obj із папки проекту. Відкрийте проект, а потім відновіть рішення.
  • Спробуйте запустити Visual Studio як адміністратор.
  • Потім очистіть розчин
  • 1) Чистий розчин. 2) Вийдіть із Visual Studio. 3) видалити папку .vs 4) Відкрийте Visual Studio

Мені вдалося це зробити, вимкнувши лише Visual Studio, видаливши папку .vs, знову вказавши Visual Studio.
Роберт Браттон

Так, для деяких це працює не в моєму випадку. Поняття не маю, чому це не вийшло. Єдине, що було - перезапустити мій комп’ютер.
Даніял

2
Зробив це після блюзкері. Довелося видалити папку .vs та перезавантажити комп’ютер . Перезавантаження візуальної студії було недостатньо.
Джонб

2
Мої кроки були стиснуті до: 1) чистого розчину. 2) Вийдіть із Visual Studio. 3) видалити папку
.vs

1
@samneric Дякую за це, я додам вам рішення у відповідь :)
Daniaal

13

Запустіть VisualStudio з правами адміністратора та запустіть проект. Потім закрийте VisualStudio та всі помилки та запустіть VisualStudio знову із звичайним користувачем.

Це зробило це для мене.

Схоже, що IIS повинен щось написати в якийсь конфігурацію з правами адміністратора (порт 80 не працював із звичайним користувачем, але порт 6767 працював нормально).


5
Лише дозволи адміністратора дозволяють додатку прив’язуватися до номера порту менше 1024. Ось чому 6767 працює для вас.
Лекс Лі

12

У мене була така ж проблема, і я зміг її вирішити, змінивши номер порту.

  1. Клацніть правою кнопкою миші на проект і виберіть властивості

  2. Перейдіть до розділу Налагодження

  3. У розділі "Налаштування веб-сервера" змініть порт додатка [просто збільшиться на один :)]

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


10

У моєму випадку це була якась інша програма, яка прослуховувала на тому ж порту, до якої намагається приєднати IIS Express. Мені доводиться бігати, netstat -aoщоб побачити PID процесу, який використовує той же порт і додаток відключення. У моєму випадку заявка була Viber.


10

Рішення, яке працювало для мене, полягало в тому, щоб: Закрити проект VS У File Explorer, перейти до проекту та видалити всю папку ".vs". Перезапустити проект. Запустити, як "Налагодження" працює, мабуть, це має щось спільне з "applicationhost .config ".

Насолоджуйтесь!


10

Багато з цих відповідей не повністю вирішують проблему. Справжньою проблемою для мене було те, що у мене було два прив’язки, використовуючи один і той же порт у моєму файлі applicationhost.config, і я не відкрив порт до мого другого (не localhost) прив’язки . VS дозволить вам продовжувати працювати за цих обставин, але тільки якщо ви перебуваєте в режимі адміністратора (звідси всі відповіді вище).

По суті, ви створюєте два екземпляри експрес-програми IIS на одному і тому ж порту, тому зміна одного з портів у вашому файлі applicationhost.config дозволить вам продовжити. Однак є два різних файли applicationhost.config. Ви хочете вибрати той, який має прив'язуючий IP та порт, який ви бачите у властивостях вашого проекту

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

Перейдіть у папку, де ви можете побачити ваше проектне рішення та папки проектів (показати приховані елементи у File Explorer). Перейдіть у свою приховану папку .vs -> папку "YourAppName" -> config. Він повинен містити інформацію про прив'язку, яку ви бачили у властивостях вашого проекту.

Приклад:

<bindings>
    <binding protocol="http" bindingInformation="*:7000:127.0.0.1" />
    <binding protocol="http" bindingInformation="*:7000:192.168.0.5" />
</bindings>

Змініть один з цих номерів портів на щось інше, ніж "7000", щоб ви не намагалися використовувати той самий порт.

У моєму випадку я використовую адресу 192, яка не є адресою localhost, тому мені потрібно використовувати декілька команд netsh, щоб відкрити цей порт та ip up. Ось посилання, яке показує, як відкрити порти для IIS Express, щоб дозволити віддалене з'єднання. Запуск як звичайний користувач не буде працювати, якщо ви не запустите ці netsh команди, перелічені.

Ось команди netsh:

  1. Netsh HTTP додати urlacl URL = http://192.168.1.42:58938/ користувача = все
  2. netsh advfirewall брандмауер додати ім'я правила = "IISExpressWeb" dir = у протоколі = tcp localport = 58938 профіль = приватний віддаленийip = локальна підшипникова дія = дозволити

Скопіюйте ці команди та запустіть їх у cmd за допомогою привілеїв ADMIN та ВАШОЇ ip-адреси та номера порту.


Це було рішенням для мене, Спасибі
WeisserHund

8

Я просто змінив свій профіль з "IIS Express" на "MyProjectName" (який, на мою думку, використовує kestrel як http-сервер замість IIS) і тепер він працює добре:

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


Це не рішення, а обхід. Ваша відповідь пропонує використовувати інший сервер - Kestrel - в той час як OP явно намагається змусити IIS-Express працювати.
Пролог

2
Після трьох днів вищипування волосся це рішення допомогло мені. Дякую
Меїр

7

ДОВІРИТИСЯ

Дійсно багато відповідей тут однакові і говорять щось на кшталт "Перезапустити, і це магічно працює знову".

Ну, у 9 з 10 разів у людей виникає така проблема, як ОП, це тому, що IP-АДРЕСА ВЖЕ ВИКОРИСТАНО.

ВІДПОВІДЬ

Можуть бути 2 ip-адреси, які використовуються. І те, і інше ви можете знайти:

1) Клацніть правою кнопкою миші на стартовому проекті

2) Клацніть на "Властивості"

3) Перейдіть на вкладку «Налагодження»

Тут ви бачите свою "URL-адресу програми" та "SSL URL-адресу".

  • Якщо ваша "URL-адреса додатка" використовується, просто змініть її та збережіть, і він повинен працювати знову.

  • Якщо використовується ваша "SSL URL-адреса", закрийте VS, видаліть файл "applicationhost.config" у прихованій папці .vs вашого проекту та відкрийте VS знову.


6

Мені вдалося переключити цю помилку, змінивши одну річ. У launchSettings.jsonфайлі проекту ASP.Net Core 1.0 RC2 Web Application :

  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "https://localhost:18177/",
      "sslPort": 0
    }
  },

до

  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:18177/",
      "sslPort": 0
    }
  },

Я змінив на https, намагаючись запустити проект за допомогою цього протоколу. Мабуть, це не місце, щоб зробити ці зміни. Я підозрюю, що це створює кілька прив'язок на одному порту, і IIS Express не любить цього.


Мені довелося це зробити, щоб збільшити номер порту. моє первісне повідомлення було "застряг", і я не маю часу перезавантажитись або зрозуміти, як це виправити
Simon_Weaver

6

У мене був цей самий випуск, але спосіб, яким я його виправив, перейшов до applicationhost.config та видалити порт, який не був доданий мною (я б здогадався, IIS Express), який розмістив мій конкретний сайт порту на іншому порту.

Ось що конфігураційний файл мав для моїх прив’язок:

<bindings>
      <binding protocol="http" bindingInformation="*:54764:localhost" />
      <binding protocol="https" bindingInformation="*:44360:localhost" />
</bindings>

Я видалив перший елемент прив'язки, оскільки єдиний порт, який я хотів, був 44360. Мій файл конфігурації виглядає приблизно так:

<bindings>
      <binding protocol="https" bindingInformation="*:44360:localhost" />
</bindings>

Тепер я не бачу помилки під час налагодження.

Я також помітив, що мій другий API в моєму проекті був також призначений йому порт 80, і я його також видалив.


5

видаліть папки bin та obj із папки проекту та відновіть.


Хоча ручне очищення часто допомагає, воно не вирішить проблему в цьому випадку, оскільки проблема знаходиться у файлі applicationhost.config і, швидше за все, викликана спробою використання однієї і тієї ж IP адреси двічі
MedievalCoder

5

Я просто очистив своє рішення, потім перевстроїв його і, нарешті, вдарив F5 і воно спрацювало! Так просто.


4

Я не буду робити вигляд, що повністю розумію, яка помилка MS створює цю проблему, але ось ще одне потенційне рішення:

У файлі .vs / config / applicationHost.config знайдіть розділ для <system.applicationHost><applicationPools>. Під пулами переконайтеся, що managedRuntimeVersionзначення атрибута відповідає значенню, яке знаходиться в конфігурації IIS для системи (та / або версії встановленої рамки .NET).

Наприклад, ви можете виявити (як і я), що в створеному файлі є:

    <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />

У моєму випадку ви заміните це на:

    <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0.30319" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />

Зверніть увагу на заміну з "v4.0" на "v4.0.30319". Це вирішило це питання.


Що, здається, відбувається:

Я вважаю, що VS генерує файл applicationHost.config з "типовими" версіями для .NET рамки, який може не відповідати конкретній версії, яка встановлена ​​/ налаштована в системі. Ви можете налагоджувати / спостерігати цю проблему, відстежуючи виконання у "Моніторі процесів" та знаходячи командний рядок для iisexpress.exe. Якщо запустити цю команду з /trace:errorдодаванням, ви отримаєте більш інформативне повідомлення про невдалу попереднього завантаження CLR версією v4.0. А саме:

Запуск IIS Express ...
Не вдалося під час спроби попередньої завантаження версії CLR v4.0. hr = 80131700
Не вдалося ініціалізувати W3WP_HOST hr = 80131700
Завершення роботи моделі процесу під назвою
Неможливо запустити iisexpress.


У будь-якому випадку, я подумав, що це може бути корисним для когось іншого, оскільки досить поширене в Інтернеті декілька посилань з поганою інформацією, і я особисто вже кілька разів потрапляв на нього.


Жоден із цих рішень не працював для мене. Якщо ви встановили Windows IIS за замовчуванням (який постачається з вашими Windows) і маєте доступ до нього, спробуйте використовувати його, що вирішило мою проблему, просто додайте там новий веб-сайт або нову програму, і це зроблено, все одно дивно, що IIS Express не в змозі відкрити сторінку. Якщо вам потрібно простежити його, просто приєднайте його до процесу за допомогою ctrl + alt + pкоротких клавіш, перевірте Show process for all usersта виберіть w3wp.exe(іноді потрібно оновити веб-сайт, щоб знайти w3wp.exe), а потім натисніть Attachкнопку.
Мухаммед Мусаві

3

Спершу спробуйте це, якщо він працював і раптом зупинився:

  • Закрити Visual Studio
  • Вбийте процеси iisexpress.exe
  • Відкрийте візуальну студію

3

Моє відбувається, як тільки я додаю нову прив'язку всередині applicationhost.config, запускаючи, коли адміністратор вирішив проблему.


3

Просто закрийте візуальну студію та знову відкрийте та виконайте. Це працювало для мене.


3

Для мене проблема полягала в тому, що інший процес використовував той же порт. (У моєму випадку прогноз використовував той самий порт, що і мій сайт, і тому мій сайт не міг запуститися)

Так, ви можете змінити локальний порт, але якщо ви використовуєте API або щось, що потрібно іншим програмам, ви не завжди бажаєте цього робити.

Щоб отримати список того, які програми використовують який порт відкрито CMD, і введіть "netstat -aon", ви отримаєте список портів. Знайдіть порт, який має використовувати ваш сайт, або який ви хочете використовувати та запишіть / запам'ятайте PID.

Тепер відкрийте диспетчер завдань і натисніть на вкладку "Подробиці". Знайдіть процес зі своїм PID і закінчіть його. Тепер ви повинні мати можливість запустити IIS Express з цього порту.


3

Мені вдалося вирішити це, перезавантаживши комп’ютер. Я спробував кілька речей невдало і, нарешті, здався і перезапустив комп’ютер. Він працює добре вже пару днів після того, як я перезапустив. Можливо, результат якогось процесу, який був вивішений.


3

Для мене це була суміш наступних цих інструкцій :

Видаліть .vs \ applicationhost.config веб-програми та повторіть спробу.

І тоді, можливо, найголовніше, запуск Visual Studio з правами адміністратора.


3

Я додав .UseUrls("https://localhost:<some port>/")до Program.cs. Це, здавалося, зробило мені трюк!


2

Я просто включив "Увімкнути SSL". Це вирішило мою проблему.

  1. Клацніть правою кнопкою миші веб-проект
  2. Вкладка налагодження
  3. Увімкнути Увімкнути SSL "увімкнено" (якщо він вимкнено, що було в моєму випадку)

2

Я щойно зіткнувся з тією ж проблемою, і я вбив усі процеси "iisexpress.exe", які все ще запущені. Це працювало для мене!


2

Моє рішення (для .net core 2.0) полягало в тому, що я забув додати номер порту в застосункуUrl під iisExpress в launchSettings.json

"iisExpress": {
  "applicationUrl": "https://localhost:50770",
  "sslPort": 50770
}

Коли launchSettings.jsonVS автоматично генерується або оновлюється, це applicationUrlмає бути /зрештою. Більше інформації можна знайти у blog.lextudio.com/…
Lex Li

2

Проблема може бути через те, що [√] Enabled SSLвибрано для вашого проекту (див. DebugВкладку у вікні налаштувань проекту), але Visual Studio вирішує бути німим і налаштувати щось на кшталт http://localhost:32396. Причина невдачі полягає в тому, що 1. це не так HTTPS, і 2. cert не є дійсним. Щоб примусити його, потрібно використовувати порт в діапазоні 44300-44398.

Дивіться https://stackoverflow.com/a/24957146/1236397



1

Спробуйте в cmd

taskkill /im iisexpress.exe /f
taskkill /im dotnet.exe /f

і натисніть f5. Я не змінюю порти, не видаляю файли та не перезавантажую VS.


Можна пояснити, що ви трохи відповіли. Просто вбивство процесу може бути не відповіддю тут. А що після?
Шихам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.