Хорошо - это мое первое развертывание приложения ASP.NET Core. Следует помнить, что я использую ASP.NET Core 2.2 и ориентируюсь на Framework версии 4.6.2 (не на .Net Core). Все это прекрасно работает на моей локальной машине с VS2017 и IISExpress.
Я прошел процедуру, описанную MS здесь: Хост ASP.NET Core на Windows с IIS Документация длинная и сложная, но я думаю, что я рассмотрел все. Это проясняет одно: Модель внутрипроцессного хостинга не поддерживается для приложений ASP.NET Core, предназначенных для .NET Framework. Итак, я знаю, что мне нужно использовать Out-of-Proc.
Некоторые другие пункты:
- Я опубликовал приложение в локальной папке и скопировал его на сервер без каких-либо изменений.
- Я создал новое приложение на веб-сайте по умолчанию и предоставил ему свой собственный пул приложений - «Нет управляемого кода»
- По умолчанию используется out-of-proc, поэтому я не делал никаких специальных настроек для этого.
- Я подтвердил, что AspNetCoreModuleV2 появляется в списке модулей.
Результат
На каждой странице, которую я нажимаю, я получаю HTTP404. Я использую IE локально на сервере и использую URL-адрес, например: http://localhost/MyApp/Home/MyView
- Пул приложений показывает, что запущено 1 приложение.
- В журнале событий приложения отображается сообщение: Приложение '/ LM / W3SVC / 2 / ROOT / MyApp' успешно запустило процесс '8864', а процесс '8864' прослушивает порт '37706'. Не показывает ошибок.
- Я попытался добавить файл default.htm в корень приложения и напрямую загрузить статическую страницу (используя http://localhost/MyApp/default.htm).. Это дает 404. Если я удалю web.config, эта страница загрузится.
Я действительно не ожидал, что развертывание приложения будет таким сложным.
Может ли кто-нибудь предоставить какие-либо рекомендации по устранению или устранению этой проблемы?
Обновление 1 : Web.config ниже. Я пытался с и без hostModel = ... aspNetCore журналы показывают успешный запуск. Ничего не добавляется в журнал при каждой попытке доступа к странице (кажется странным)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--
Configure your application settings in appsettings.json. Learn more at http://go.microsoft.com/fwlink/?LinkId=786380
-->
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
<remove name="BlockViewHandler" />
<add name="JavaScript" path="*.js" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
<add name="CSS" path="*.css" verb="GET,HEAD" type="System.Web.StaticFileHandler" />
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
<aspNetCore processPath=".\My.App.Name.exe" arguments="" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess">
<environmentVariables />
<handlerSettings>
<handlerSetting name="debugLevel" value="file" />
<handlerSetting name="debugFile" value="d:\Log\MyApp.log" />
</handlerSettings>
</aspNetCore>
</system.webServer>
</configuration>
<!--ProjectGuid: ee76911e-decb-48b7-bd74-36ebfbdb22b6-->