Использование порта 80 с IIS Express внутри VS2010

у меня есть приложение, которое я пытаюсь запустить в своей системе разработки под 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 работает на process ID 4, который является ядром NT и системным процессом. Я не знаю, помешает ли это мне использовать порт. Я подумал, может быть, это результат http.sys держит этот порт, чтобы ничто другое не могло его использовать?

мне удалось запустить IIS Express на порту 80, изменив привязку по умолчанию , и хотя я могу запустить IIS Express вручную таким образом, VS затем получает ошибку, потому что привязка уже существует на этом порту. Поэтому я меняю его обратно на 8080, создаю виртуальный каталог с помощью кнопки в VS2010 (что, как я предполагаю, то же самое, что и ввод привязки сайта), но я все равно получаю ошибку, когда иду отлаживать приложение. Есть ли что-то жестко закодированное в VS2010, что не позволит ему запустить IIS Express на порту 80?

ОБНОВЛЕНИЕ И ИСПРАВЛЕНИЕ: Итак, я нашел еще несколько вещи для проверки, и я решил свою проблему, но не полностью. Один пост предложил убедиться, что у меня не установлены службы SQL reporting services, поскольку он может контролировать порт 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?

4 ответов


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


в моем случае я решил проблему, остановив "службы SQL Server Reporting Services"

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

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


большое спасибо за открытие службы "Web Deploy Agent"! Это то, что только недавно было включено, поскольку у меня все это отлично работало и только сегодня установила обновленную версию IIS Express и столкнулась с той же проблемой с портом 80. Итак, теперь, когда я отключил агент веб-развертывания, моя система снова работает правильно.

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

    <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 просто не работает вообще?


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

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

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

соответствует ID процесса из команда netstat для PID в диспетчере задач, и вы найдете сервис или приложение, которое использует порт.