Ответ 1
Я могу подтвердить, что Visual Studio 2013 свободен от этой проблемы.
Обновление с VS2012 до 2013 года решило проблему для меня.
ADFS2 требует, чтобы трафик RP Trust использовал https. Трафик RP равен https://localhost:44310/PAWS/
. С учетом сказанного мне нужно, чтобы IIS Express использовал SSL локально. Поэтому, когда я настраиваю проект ASP.NET MVC4 на использование IIS Express.
Когда я проверяю это на TFS (контроль источника), а другой разработчик в команде получает последние. Проект не будет загружаться для них.
В Visual Studio 2012 будут отображаться следующие сообщения об ошибках при открытии решения:
Это связано с тем, что 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 не сможет загрузить проект и не будет жаловаться на отсутствие защищенных привязок.
Что я делаю неправильно или как я могу исправить это, чтобы люди, которые получили последний в моем проекте, смогут его запустить?
Я могу подтвердить, что Visual Studio 2013 свободен от этой проблемы.
Обновление с VS2012 до 2013 года решило проблему для меня.
Недавно я столкнулся с этой проблемой, и я смог определить, почему это происходит.
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.
Похоже, что это может быть ошибка в 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.
Надеюсь, что это поможет...
Вам нужно установить SSL Enabled в True в списке свойств проекта, чтобы автоматически установить эту привязку. (за Скотта Гензельмана)
Вы пытались открыть проект в качестве администратора (запустить VS2012 в качестве администратора)?
Обычно, когда вы получаете вышеуказанные ошибки (настройка веб-ххх для ASP.NET 4.5 не удалась...) и (создание виртуального каталога xxx не удалось) связано с тем, что визуальная студия не имеет достаточных привилегий.
Не может быть вашей проблемой, но вам не помешает попробовать.
Прежде всего, благодарю вас за предоставление шагов для воспроизведения этого на вашем локальном компьютере. У других членов команды была эта проблема, но с тех пор, как я создал проект, я не испытал этого. Это позволило мне поэкспериментировать с некоторыми различными решениями.
То, что я нашел, работает лучше всего в текущей среде (без исправления от MS) заключается в том, чтобы оставить URL-адрес проекта в качестве значения http, но изменить начальный URL-адрес на значение https. Большинство разработчиков должно быть удобно изменить это в VS.
Это работает на новых машинах, не требуя, чтобы кто-то запускал файл bat для настройки сайта https. У вас есть две привязки в IIS Express (http и https), но, кроме того, она работает достаточно хорошо.
Вы пытались вручную настроить порт в файле .csproj? После того, как вы настроили его там, он должен переноситься на другие рабочие станции:
<IISExpressSSLPort>44310</IISExpressSSLPort>
Кроме того, файл проекта может по-прежнему вызывать проблемы даже при включенной опции "Применить настройки сервера для всех пользователей". Обычно я просто удаляю файл пользователя, когда исправляю проблемы с SSL с помощью IIS Express, потому что гораздо проще просто перенастроить параметры моего пользователя после того, как я исправил свою проблему.
У меня недавно была очень похожая проблема, и я столкнулся с этим сообщением при попытке решить. Одна вещь, которую я заметил, это то, что IIS Express, похоже, очень огорчен, если в файле applicationhost.config настроено более одного сайта с привязкой HTTPS.
В моем случае у меня было 2 сайта, настроенных на использование одной и той же привязки SSL к порту 44300, изменение номера порта в одном из привязок SSL на одном из сайтов вызвало ошибки, подобные тем, которые есть в OP. В итоге мне пришлось удалить один из сайтов, что не идеально.
После небольшого перекопа, я попробовал переключить свойство "Требовать SSL" от true
до false
и вернуться к true
. Это вызвало обновление applicationhost.config, которое создало новую привязку SSL с новым номером порта.
Я попал в этот беспорядок, потому что я скопировал существующий проект, и моя конфигурация пыталась обмениваться портами между двумя сайтами.
Я вижу два варианта:
Включить параметр Apply server для всех пользователей (сохранить в проекте файл) на вкладке "Сеть", чтобы переместить конфигурацию привязки в файл проекта.
или
Добавьте файл вашего проекта в исходный код.
Любой подход позволит пользователям получать последние версии и запускать без проблем.
У меня недавно была очень похожая проблема с 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, для одного и того же сайта.