Отладка основных приложений ASP.NET, работающих в IIS
Есть ли способ отлаживать веб-приложение ASP.NET Core во время работы в IIS?
Я работаю под IIS, потому что мне нужно, чтобы он был доступен через SSL на порту 443.
Ответы
Ответ 1
- Публиковать веб-приложение с конфигурацией отладки
- Настройте веб-сайт на IIS, как описано здесь
- Откройте веб-сайт в браузере, чтобы запустить процесс dotnet.
- В Visual Studio откройте Debug → Attach to Process или нажмите Ctrl + Alt + P
- Убедитесь, что в строке "Прикрепить к" у вас есть "Автоматический" или "Управляемый (v4.6, v4.5, v4.0)". Если нет, нажмите select и выберите "Автоматически определять тип кода для отладки"
- Отметьте "Показывать процессы от всех пользователей"
- Выберите
dotnet.exe
и нажмите "Прикрепить"
Примечание. Если вы видите несколько процессов dnx.exe, выберите один из пользователей IIS в имени пользователя столбца. По умолчанию это "IIS APPPOOL {имя вашего пула приложений)"
P.S. Если вы видите процесс dotnet с пустым именем пользователя, запустите Visual Studio как Administrator
UPDATE
С ASP.Net Core 1.0.0 вы должны подключиться к "{youprojectnamet.exe}". Например. если проект имеет имя "Web", вы должны прикрепить к "Web.exe",
Также вы можете найти имя исполнителя в следующем разделе web.config
<system.webServer>
<aspNetCore processPath=".\Web.exe" />
</system.webServer>
Ответ 2
Преимущество состоит в том, что вы можете фактически использовать веб-сайт за пределами, используя фактическое имя хоста. Представьте, что приложение android пытается подключиться к localhost для отладки основного веб-сервиса asp.net. боль в настройке, если вы не можете фактически использовать фактический физический IP-адрес и подключиться к чему-то, работающему на iis. Как прежде. Все может быть сделано, но это не значит, что оно новое автоматически становится более практичным. И не имея старой опции debug iis, это шаг назад с точки зрения производительности.
Ответ 3
Это действительно необходимо? Приложения ASP.NET Core запускаются как внешний процесс для IIS (с использованием dotnet.exe), поэтому отладки через IIS действительно ничего не получается. Бэкэнд-приложение получает запросы по простому HTTP.
Подробнее о том, как работает реальный хостинг IIS с ASP.NET Core, вы можете проверить это сообщение в блоге:
http://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS
Visual Studio в настоящее время не поддерживает отладку под полным IIS, и из того, что я слышал, это не то, что планируется. Microsoft поддерживает работу с IIS Express, и вы можете настроить сертификат для IIS Express.
В проекте ASP.NET Core в параметрах Debug Project есть опция Включить SSL, которую вы можете включить. IIS Express создаст локальный сертификат и позволит вам отлаживать ваше приложение с помощью SSL.
Преимущество такого подхода заключается в том, что он просто работает, нажав F5 - не требуется ручное вложение.
![введите описание изображения здесь]()
Ответ 4
Просто прошел историю и наткнулся на эту.
В случае, если кто-то каждый дойдет до этого вопроса... решение для меня оказалось довольно простым.
Если вы используете аутентификацию в своем основном приложении .net, просто убедитесь, что она использует базовый auth с использованием HTTP (для части отладки).
Затем в IIS просто используйте Url Rewrite для установки обратного прокси-сервера в ваш http://localhost:someport.
Это. Задача решена.
Возможно, url rewrite скоро поддержит https, и в этом случае базовая версия auth с использованием HTTP также может использоваться для целей отладки. Что было бы здорово.
Но пока эта установка решила все мои проблемы.