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

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

У меня есть приложение, которое я пытаюсь запустить в своей dev-системе под 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?

UPDATE и FIX: Хорошо, поэтому я нашел еще несколько вещей, чтобы проверить, и я решил проблему, но не полностью. Одна статья предложила убедиться, что у меня не было служб отчетов SQL, поскольку они могут отслеживать порт 80, я использовал его, но не больше, и это не проблема, с которой я столкнулся. Однако я понял, что у меня установлен WebDeploy. Он был связан с пакетом SP2010 SP1 от установщика веб-платформы. Это нормально, так как я хочу, чтобы клиентские инструменты из WebDeploy, но он также установил агента в моей системе, который контролировал порт 80. Я пошел в свой список служб и остановил Web Deploy Agent Service. Вскоре, когда я это сделал, теперь я могу использовать порт 80 для IIS Express из VS2010.

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

СПАСИБО БОЛЬШЕ, ЧТОБЫ ВЫ ПОЛУЧИТЬ СЕРВИСУ! Это то, что недавно было включено, так как я все это прекрасно работаю и только сегодня установил обновленную версию 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?

Ответ 4

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

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

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

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