Использование порта 80 с IIS Express внутри VS2010 - PullRequest
31 голосов
/ 15 апреля 2011

У меня есть приложение, которое я пытаюсь запустить в своей системе разработки под IIS Express от VS2010, для которого мне нужно использовать порт 80, но я не могу заставить его работать. Я искал информацию о том, что порт 80 зарезервирован. http://learn.iis.net/page.aspx/1005/handling-url-binding-failures-in-iis-express/

Но даже после этого я все равно получаю ошибку от vs2010, которая говорит "Невозможно запустить веб-сервер IIS Express. Порт '80' используется."

Я не знаю, что еще попробовать. Я использовал Process Hacker для отслеживания порта 80, и он, похоже, используется System, работающим с идентификатором процесса 4, который является ядром NT и системным процессом. Я не знаю, если это помешает мне использовать порт, хотя. Я подумал, что это может быть следствием того, что http.sys удерживает этот порт, чтобы никто другой не мог его использовать?

Мне удалось заставить IIS Express работать на порте 80, изменив привязку по умолчанию для файла C:\Users\[MyUser]\Documents\IISExpress\config\applicationhost.config, и, хотя я могу запустить IIS Express таким образом вручную, VS получает ошибку, потому что привязка уже существует на этом порт. Поэтому я изменяю его обратно на 8080, создаю виртуальный каталог с помощью кнопки в VS2010 (что, как я предполагаю, совпадает с вводом привязки сайта), но я все равно получаю сообщение об ошибке при отладке приложения. Есть ли что-то жестко закодированное в VS2010, которое не позволяет запускать IIS Express через порт 80?

ОБНОВЛЕНИЕ И ИСПРАВЛЕНИЕ: Хорошо, поэтому я нашел еще несколько вещей для проверки и решил проблему, но не полностью. В одном посте предлагалось удостовериться, что у меня не установлены службы отчетов SQL, поскольку он может контролировать порт 80, раньше я его устанавливал, но не больше, и это не было проблемой, с которой я столкнулся. Однако я понял, что у меня установлен WebDeploy. Он был связан с пакетом VS2010 SP1 из установщика веб-платформы . Это нормально, так как мне нужны клиентские инструменты из WebDeploy, но он также установил агент в моей системе, который осуществлял мониторинг на порту 80. Я пошел в свой список служб и остановил Web Deploy Agent Service. Как только я это сделал, теперь я могу использовать порт 80 для IIS Express из VS2010.

Новая проблема, связанная с работой на порте 80 в IIS Express Однако мое приложение является приложением MVC3, и я столкнулся с проблемой, потому что MVC3 вообще не захватывает мой запрос, поэтому он не запускает действия моего контроллера или что-то в этом роде, а представляет собой txt-файл в корне моего приложения. можно узнать, так что я знаю, что это мой сайт, который обслуживает IIS Express. У кого-нибудь есть проблемы с запуском MVC3 (я не знаю, является ли он эксклюзивным для MVC3 или нет) в IIS Express на порту 80?

Ответы [ 5 ]

23 голосов
/ 21 апреля 2011

Просто отправляю свой ответ на эту проблему, чтобы пометить вопрос как ответивший.Установите флажок http://learn.iis.net/page.aspx/1005/handling-url-binding-failures-in-iis-express/ Отключите службу агента веб-развертывания, если она установлена.

4 голосов
/ 18 июня 2014

в моем случае я решил проблему, остановив «Службы отчетов SQL Server»

вы можете найти его в

Панель управления -> Услуги

3 голосов
/ 21 апреля 2011

СПАСИБО за то, что вы открыли для себя услугу «Агент Web Deploy»!Это то, что только недавно было включено, так как у меня все это работало идеально, и только сегодня установил обновленную версию IIS Express и столкнулся с точно такой же проблемой с портом 80. Итак, теперь, когда я отключил агент Web Deploy,моя система снова работает правильно.

Что касается ASP.NET MVC3, это прекрасно работает для меня на порте 80 и порте 443. Было довольно сложно связать оба этих порта, чтобы IIS Express могиспользуйте их как обычный пользователь (в основном по ссылке, указанной выше), а также для установки SSL-сертификата, который мы используем.Я вручную создал все записи в моем файле applicationhost.config, чтобы заставить его работать, и соответствующий раздел сайтов приведен ниже:

    <sites>
        <site name="PHP: A Main" id="2144116512">
            <application path="/">
                <virtualDirectory path="/" physicalPath="C:\var\www\amain\www" />
                <virtualDirectory path="/images" physicalPath="C:\var\www\images" />
            </application>
            <application path="/admin">
                <virtualDirectory path="/" physicalPath="C:\var\www\amain\www\admin" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:80:test.amainhobbies.com" />
                <binding protocol="https" bindingInformation="*:443:test.amainhobbies.com" />
            </bindings>
        </site>
        <siteDefaults>
            <logFile logFormat="W3C" directory="%IIS_USER_HOME%\Logs" />
            <traceFailedRequestsLogging directory="%IIS_USER_HOME%\TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
        </siteDefaults>
        <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
        <virtualDirectoryDefaults allowSubDirConfig="true" />
    </sites>

Обратите внимание, что мой сайт представляет собой комбинированный сайт PHP и ASP.NET MVC3, так какмы сейчас переписываем все это для работы на ASP.NET MVC3, поэтому большая часть сайта все еще на PHP, но сейчас много нового работает на ASP.NET MVC3, и этот материал работает для меня.

Правильно ли работает ваш IIS Express с MVC3 вне Visual Studio, или MVC3 просто не работает вообще?

0 голосов
/ 27 февраля 2019

Это решение помогло мне.

В Windows 7 или Windows Vista из командной строки с повышенными привилегиями выполните следующую команду: console

netsh http add urlacl url=http://localhost:80/ user=everyone

Эта команда разрешит любое пользовательское приложение (включая ваши собственные экземпляры IIS Express) для работы через порт 80 без административных привилегий.Чтобы ограничить этот доступ к себе, замените «всех» вашей идентификационной информацией Windows.

Взято из этого источника -> https://docs.microsoft.com/en-us/iis/extensions/using-iis-express/handling-url-binding-failures-in-iis-express

0 голосов
/ 11 февраля 2014

У меня не был установлен агент Web Deploy, но я столкнулся с этой проблемой.Это также можно исправить, выполнив эту команду, чтобы выяснить, какое приложение или служба использует порт, а затем отследить его в диспетчере задач.

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

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

...