Проблемы с использованием IIS Express SSL с VS2012 и командой

Проблема:

ADFS2 требует, чтобы трафик RP Trust использовал https. Трафик RP равен https://localhost:44310/PAWS/. С учетом сказанного мне нужно, чтобы IIS Express использовал SSL локально. Поэтому, когда я настраиваю проект ASP.NET MVC4 на использование IIS Express. mvc4 project configuration

Когда я проверяю это на TFS (контроль источника), а другой разработчик в команде получает последние. Проект не будет загружаться для них.

MVC4 project wont load

В Visual Studio 2012 будут отображаться следующие сообщения об ошибках при открытии решения: VS2012 error 1VS2012 error 2

Это связано с тем, что IIS Express не будет автоматически читать файл проекта и добавлять привязку HTTPS к конфигурации сайта. Это конфигурация, которую VS добавляет к файлу applicationhost.config IIS Express

<site name="PAWS.Web-Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\larsene\Documents\My Web Sites\PAWS.Web-Site14" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:44310:localhost" />
    </bindings>
</site>

Но мне нужно, чтобы протокол привязки был установлен на HTTPS так:

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

Я могу либо вручную ввести это в applicationhost.config. Или я могу запустить appcmd.exe, чтобы настроить его.

"%ProgramFiles(x86)%\IIS Express\appcmd.exe" set site /site.name:PAWS.Web-Site /bindings:https/*:44310:localhost

Но любой из этих двух методов - это не то, что я хочу. Я не хочу объяснять каждому разработчику, который работает над этим проектом, чтобы вручную отредактировать свои настройки IIS Express, прежде чем они смогут даже загрузить проект.

Как воссоздать проблему:

Это легко воссоздается при первом закрытии VS2012. Затем удалите папку конфигурации для IIS Express, расположенную в

%USERPROFILE%\Documents\IISExpress

а затем откройте VS2012, а также откройте решение для проекта MVC4, настроенного на использование IIS Express с https. Теперь VS2012 не сможет загрузить проект и не будет жаловаться на отсутствие защищенных привязок.

Что я делаю неправильно или как я могу исправить это, чтобы люди, которые получили последний в моем проекте, смогут его запустить?

Ответ 1

Я могу подтвердить, что Visual Studio 2013 свободен от этой проблемы.

Обновление с VS2012 до 2013 года решило проблему для меня.

Ответ 2

Недавно я столкнулся с этой проблемой, и я смог определить, почему это происходит.

Visual Studio использует параметр Url проекта для установки привязки http IIS Express, а затем он ищет параметр IISExpressSSLPort для установки привязки https.

Однако, если вы изменили URL-адрес проекта на адрес https, то есть, когда Visual Studio запутается. В целях обновления привязки IIS Express предполагается, что вы ввели адрес http для Url проекта и, похоже, не можете обрабатывать адрес https.

Это усложняет ситуацию, поскольку изменение URL-адреса проекта на адрес https является единственным способом, который я нашел, чтобы заставить Visual Studio начать отладку https-url по умолчанию.

Итак, кажется, что проблема связана с тем, как Visual Studio обрабатывает обновления привязки IIS Express. Я не знаю о хорошем обходном пути, который позволяет как автоматические обновления привязки, так и начать отладку с загруженным адресом https.

Ответ 3

Похоже, что это может быть ошибка в VS2012... Единственный способ справиться с этим - вручную отредактировать файл конфигурации IISExpress: applicationhost.config, расположенный в папке C:\Users\YOUR_USER_NAME\Documents\IISExpress\config. Затем в разделе "сайты" я изменил блок для конкретного веб-сайта приложения:

    <site name="YourSite" id="1">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="c:\..." />
            </application>
            <bindings>
                <binding protocol="https" bindingInformation="*:YOUR_PORT_#:localhost" />
            </bindings>
    </site>

Измените "протокол привязки" на "https" и убедитесь, что вы запускаете Visual Studio 2012 с правами администратора, по крайней мере, до тех пор, пока сайт не будет создан/изменен в IIS Express.

Надеюсь, что это поможет...

Ответ 4

Вам нужно установить SSL Enabled в True в списке свойств проекта, чтобы автоматически установить эту привязку. (за Скотта Гензельмана)

As seen in Visual Studio 2010

Ответ 5

Вы пытались открыть проект в качестве администратора (запустить VS2012 в качестве администратора)?

Обычно, когда вы получаете вышеуказанные ошибки (настройка веб-ххх для ASP.NET 4.5 не удалась...) и (создание виртуального каталога xxx не удалось) связано с тем, что визуальная студия не имеет достаточных привилегий.

Не может быть вашей проблемой, но вам не помешает попробовать.

Ответ 6

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

То, что я нашел, работает лучше всего в текущей среде (без исправления от MS) заключается в том, чтобы оставить URL-адрес проекта в качестве значения http, но изменить начальный URL-адрес на значение https. Большинство разработчиков должно быть удобно изменить это в VS.

Это работает на новых машинах, не требуя, чтобы кто-то запускал файл bat для настройки сайта https. У вас есть две привязки в IIS Express (http и https), но, кроме того, она работает достаточно хорошо.

Ответ 7

Вы пытались вручную настроить порт в файле .csproj? После того, как вы настроили его там, он должен переноситься на другие рабочие станции:

<IISExpressSSLPort>44310</IISExpressSSLPort>

Кроме того, файл проекта может по-прежнему вызывать проблемы даже при включенной опции "Применить настройки сервера для всех пользователей". Обычно я просто удаляю файл пользователя, когда исправляю проблемы с SSL с помощью IIS Express, потому что гораздо проще просто перенастроить параметры моего пользователя после того, как я исправил свою проблему.

Ответ 8

У меня недавно была очень похожая проблема, и я столкнулся с этим сообщением при попытке решить. Одна вещь, которую я заметил, это то, что IIS Express, похоже, очень огорчен, если в файле applicationhost.config настроено более одного сайта с привязкой HTTPS.

В моем случае у меня было 2 сайта, настроенных на использование одной и той же привязки SSL к порту 44300, изменение номера порта в одном из привязок SSL на одном из сайтов вызвало ошибки, подобные тем, которые есть в OP. В итоге мне пришлось удалить один из сайтов, что не идеально.

После небольшого перекопа, я попробовал переключить свойство "Требовать SSL" от true до false и вернуться к true. Это вызвало обновление applicationhost.config, которое создало новую привязку SSL с новым номером порта.

Я попал в этот беспорядок, потому что я скопировал существующий проект, и моя конфигурация пыталась обмениваться портами между двумя сайтами.

Ответ 9

Я вижу два варианта:

  • Включить параметр Apply server для всех пользователей (сохранить в проекте файл) на вкладке "Сеть", чтобы переместить конфигурацию привязки в файл проекта.

    или

  • Добавьте файл вашего проекта в исходный код.

    Любой подход позволит пользователям получать последние версии и запускать без проблем.

Ответ 10

У меня недавно была очень похожая проблема с VS 2019 и IIS Epress. Я попытался изменить http на https, чтобы я мог использовать ADFS. Се сайт недоступен localhost n'autorise pas la connexion.

После небольшого исследования я попытался изменить свойство 'Require SSL' с true на false и обратно на true. Это вызвало обновление файла applicationhost.config(.... Vs\ProjectName\config\applicationhost.config), который создал новую привязку SSL с новым номером порта для протокола https. Итак, я изменил все ссылки с предложенным новым портом (в веб-свойстве проекта, в файле конфигурации и в конфигурации ADFS), и он работает. Вывод: необязательно, чтобы http-порт был таким же, как https, для одного и того же сайта.