Я пытаюсь обновить существующее приложение с 2.1 до 2.2. Наряду с этим я пытаюсь обновить хост-модуль AspNetCore для IIS до AspNetCoreModuleV2
.
Вот как выглядит мой web.config на данный момент:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<remove name="WebDAV" />
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\MyApp.dll"
stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"
hostingModel="InProcess">
</aspNetCore>
<modules>
<remove name="WebDAVModule" />
</modules>
</system.webServer>
</location>
</configuration>
My AppPoolи приложение уже было настроено до использования AspNetCoreModule. Физический путь для приложения указывает на корневой каталог проекта, в котором находится файл web.config:
C:\DEV\MyApp
Теперь при посещении проверки работоспособности появляется следующая ошибка:
HTTP Error 500.0 - ANCM In-Process Handler Load Failure
Common causes of this issue:
The specified version of Microsoft.NetCore.App or Microsoft.AspNetCore.App was not found.
The in process request handler, Microsoft.AspNetCore.Server.IIS, was not referenced in the application.
ANCM could not find dotnet.
Troubleshooting steps:
Check the system event log for error messages
Enable logging the application process' stdout messages
Attach a debugger to the application process and inspect
Когда я включаю ведение журнала stdout в web.config, единственное, что я получаю, это:
Failed to initialize CoreCLR, HRESULT: 0x80131022
Мне интересно, ищет ли он эту dll на физическом пути, по которому приложениевместо bin\Debug\netcoreapp2.2\MyApp.dll
?
Если я изменю arguments
, чтобы указать на этот полный путь, он все равно не работает, я думаю, потому что все, что находится в этом каталоге, - это мои собственные библиотеки DLL, а не сеть.config или системные зависимости.
Если я публикую (т.е. dotnet publish
), он создает publish
dir в выходном каталоге, а затем, если я указываю физический путь на , то dir, страница работает, так как в ней есть все необходимые биты.
Как я должен это настроить, чтобы я мог просто встроить VS и обновить обновления, а такжепубликовать чисто, используя тот же web.config?
В идеале я могу просто пересобрать, сиз-за необходимости публиковать. Не уверен, что я делаю не так. Различные справочные статьи содержат разные инструкции.
Дополнительная информация:
- Использование VS 2017 (15.9.17)
dotnet --list-sdks
Выход:
2.1.509 [C:\Program Files\dotnet\sdk]
2.2.107 [C:\Program Files\dotnet\sdk]
2.2.109 [C:\Program Files\dotnet\sdk]
2.2.402 [C:\Program Files\dotnet\sdk]
dotnet --list-runtimes
выход:
Microsoft.AspNetCore.All 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
ОБНОВЛЕНИЕ 1 Похоже, VS 2017 не компилирует некоторые связанные .NET Standard / Coreсборки и включение их в вывод. Я вижу эту ошибку в журналах ASNM:
Error:
An assembly specified in the application dependencies manifest (MyApp.deps.json) was not found:
package: 'AWS.Logger.Core', version: '1.5.1'
path: 'lib/netstandard2.0/AWS.Logger.Core.dll'
ОБНОВЛЕНИЕ 2 Мне удалось включить дополнительные журналы. См. Результаты ниже:
[aspnetcorev2.dll] Initializing logs for 'C:\Program Files\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll'. Process Id: 17420.. File Version: 12.2.19225.7. Description: IIS ASP.NET Core Module V2. Commit: be0a4a7f4cf06cbd6ec714bd1d9afee6bdb040a8.
[aspnetcorev2.dll] Resolving hostfxr parameters for application: 'dotnet' arguments: 'exec .\MyApp.dll' path: 'C:\DEV\MyApp\'
[aspnetcorev2.dll] Known dotnet.exe location: ''
[aspnetcorev2.dll] Process path 'dotnet.exe' is dotnet, treating application as portable
[aspnetcorev2.dll] Resolving absolute path to dotnet.exe from 'dotnet.exe'
[aspnetcorev2.dll] Invoking where.exe to find dotnet.exe
[aspnetcorev2.dll] where.exe invocation returned: 'C:\Program Files (x86)\dotnet\dotnet.exe
C:\Program Files\dotnet\dotnet.exe
'
[aspnetcorev2.dll] Current process bitness type detected as isX64=1
[aspnetcorev2.dll] Processing entry 'C:\Program Files (x86)\dotnet\dotnet.exe'
[aspnetcorev2.dll] Binary type 0
[aspnetcorev2.dll] Processing entry 'C:\Program Files\dotnet\dotnet.exe'
[aspnetcorev2.dll] Binary type 6
[aspnetcorev2.dll] Found dotnet.exe via where.exe invocation at 'C:\Program Files\dotnet\dotnet.exe'
[aspnetcorev2.dll] Resolving absolute path to hostfxr.dll from 'C:\Program Files\dotnet\dotnet.exe'
[aspnetcorev2.dll] hostfxr.dll located at 'C:\Program Files\dotnet\host\fxr\2.2.7\hostfxr.dll'
[aspnetcorev2.dll] Converted argument '.\MyApp.dll' to 'C:\DEV\MyApp\MyApp.dll'
[aspnetcorev2.dll] Parsed hostfxr options: dotnet location: 'C:\Program Files\dotnet\dotnet.exe' hostfxr path: 'C:\Program Files\dotnet\host\fxr\2.2.7\hostfxr.dll' arguments:
[aspnetcorev2.dll] Argument[0] = 'C:\Program Files\dotnet\dotnet.exe'
[aspnetcorev2.dll] Argument[1] = 'exec'
[aspnetcorev2.dll] Argument[2] = 'C:\DEV\MyApp\MyApp.dll'
[aspnetcorev2.dll] Event Log: 'Invoking hostfxr to find the inprocess request handler failed without finding any native dependencies. This most likely means the app is misconfigured, please check the versions of Microsoft.NetCore.App and Microsoft.AspNetCore.App that are targeted by the application and are installed on the machine.'
End Event Log Message.
[aspnetcorev2.dll] Failed HRESULT returned: 0x8000ffff at d:\b\w\da744fbcc13abce\src\servers\iis\aspnetcoremodulev2\aspnetcore\handlerresolver.cpp:80
[aspnetcorev2.dll] Event Log: 'Could not find inprocess request handler. Captured output from invoking hostfxr: Error:
An assembly specified in the application dependencies manifest (MyApp.deps.json) was not found:
package: 'AWS.Logger.Core', version: '1.5.1'
path: 'lib/netstandard2.0/AWS.Logger.Core.dll'
'
End Event Log Message.
[aspnetcorev2.dll] Failed HRESULT returned: 0x8000ffff at d:\b\w\da744fbcc13abce\src\servers\iis\aspnetcoremodulev2\aspnetcore\handlerresolver.cpp:153
[aspnetcorev2.dll] Failed HRESULT returned: 0x8000ffff at d:\b\w\da744fbcc13abce\src\servers\iis\aspnetcoremodulev2\aspnetcore\applicationinfo.cpp:136
[aspnetcorev2.dll] Failed HRESULT returned: 0x8000ffff at d:\b\w\da744fbcc13abce\src\servers\iis\aspnetcoremodulev2\aspnetcore\applicationinfo.cpp:91
[aspnetcorev2.dll] Event Log: 'Failed to start application '/LM/W3SVC/1/ROOT/myapp', ErrorCode '0x8000ffff'.'
End Event Log Message.
ОБНОВЛЕНИЕ 3 Мне кажется, что я получу дальнейшее развитие, если удаляю свой ранее созданный вручную пул приложений и сайт, а затем позволяю Visual Studio создать его для меня, когда ястроить. Должны быть установлены дополнительные разрешения для доступа к каталогу, в котором находятся пакеты nuget