Запуск нескольких экземпляров IIS Express на одном порту через Visual Studio - PullRequest
11 голосов
/ 09 мая 2011

В настоящее время в IIS Express настроены сайты для каждого приложения, над которым я работал. Каждый из них настроен на локальный запуск через порты 80 и 443, но имеет отдельные привязки (http://site1/ и http://site2/), причем эти псевдонимы указывают локально из моего файла hosts.

Я могу запустить эти сайты одновременно при запуске IIS Express напрямую (из командной строки), но позволить VS2010 запускать их при неудачной отладке. Первый сайт запускается и отлаживается, как и должно, но второй запускаемый сайт выдает ошибку: «Невозможно запустить веб-сервер IIS Express. Порт 80 используется».

Вот конфигурация IIS Express, которую я использую (слегка измененная для удаления имен проектов):

<site name="Site1" id="1" serverAutoStart="true">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site1Path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:Site1" />
        <binding protocol="https" bindingInformation="*:443:Site1" />
    </bindings>
</site>
<site name="Site2" id="2" serverAutoStart="true">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site2Path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:Site2" />
        <binding protocol="https" bindingInformation="*:443:Site2" />
    </bindings>
</site>

Может показаться, что VS проверяет все, что в данный момент прослушивает порт 80, тогда как IIS Express таким образом не ограничивается. Я все еще могу подключить VS к экземплярам IIS Express, запущенным из командной строки, но я бы предпочел, чтобы VS управлял ими.

Является ли это ограничением того, как VS2010 обрабатывает IIS Express, и если да, то каков хороший обходной путь?

Ответы [ 2 ]

9 голосов
/ 09 мая 2011

Вы правы ... это ограничение VS2010. Я не уверен, что следующий обходной путь работает для вас или нет.

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

<site name="MySite" id="1" serverAutoStart="true">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="SiteRoot" />
    </application>
    <application path="/Site1" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site1Path" />
    </application>
    <application path="/Site2" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site2Path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:80:Site1" />
        <binding protocol="https" bindingInformation="*:443:Site1" />
    </bindings>
</site>

и затем вы можете получить к ним доступ как http://localhost/site1 и http://localhost/site2

2 голосов
/ 07 июня 2013

Начало привязки коллекции каждого сайта представляется ошибкой в ​​случае того же порта Visual Studio.Запуск из Visual Studio можно было сделать, добавив привязку, в которой указаны разные порты.

<site name="Site1" id="1" serverAutoStart="true">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site1Path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:44300:Site1" />
        <binding protocol="http" bindingInformation="*:80:Site1" />
    </bindings>
</site>
<site name="Site2" id="2" serverAutoStart="true">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="Site2Path" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:44301:Site2" />
        <binding protocol="http" bindingInformation="*:80:Site2" />
    </bindings>
</site>

<binding protocol="http" bindingInformation="*:44300:Site1" />

<binding protocol="http" bindingInformation="*:44301:Site2" />

Запуск http://Site1/http://Site2/ и http://Site1:44300/ http://Site2:44301

netsh http add urlacl url=http://Site1:44300/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...