В основном я пытаюсь настроить свой проект asp net core 3.0 для размещения на IIS только для целей разработки. Я включил необходимые функции Windows ISS и установил пакет веб-хостинга. Для неопубликованного (папка bin) хостинга я понял, что мне нужно вручную добавить web.config в корневой каталог проекта, поэтому я скопировал тот, который сгенерирован для моей опубликованной версии (которая работает без проблем):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MyApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
</configuration>
После сборки приложения этот подход не сработал. Я понял, что атрибут arguments указывает на несуществующий файл. Так как MyApp.dll находится внутри папки bin, а не в корне проекта, я изменил его на следующее:
arguments=".\bin\Debug\netcoreapp3.0\MyApp.dll"
И теперь сайт работает! Но есть большая проблема, сборка проекта не удалась, потому что IIS блокирует мои файлы в \ bin. Поэтому в настоящее время мой процесс включает в себя ручную остановку пула приложений, сборку проекта и повторный запуск пула.
Теперь я даже не уверен, является ли это правильным подходом к хостингу? У меня возникает ощущение, что IIS должен читать файл web.config, который находится в папке \ bin \ Debug, а не в корневом каталоге проекта. Но без уровня проекта web.config мой сайт вообще не запустится.