Я новичок в Azure и немного смущен несколькими вещами.У меня не получается, чтобы мое приложение MVC Core работало должным образом.
Приложение представляет собой приложение MVC .Net Core 2.1, предназначенное для платформы .Net 4.7.2 (не .Net Core), с довольно сложной зависимостью.graph.
С локальным IIS Express он работает отлично, и он также работает, когда я публикую его в Visual Studio на локальном экземпляре IIS (с установленным AspNetCoreModule).
Но когда я пытаюсь опубликоватьв Azure публикация идет хорошо, но приложение не запускается при запуске (502.5, сбой процесса).
При запуске EXE из консоли Azure я вижу ошибку:
Неустранимыйошибка обнаруженаБиблиотека 'hostpolicy.dll', необходимая для запуска приложения, не найдена в 'D: \ home \ site \ wwwroot \'.
Не удалось запустить как автономное приложение.Если это должно быть зависимое от фреймворка приложение, укажите соответствующий фреймворк в D: \ home \ site \ wwwroot \ xxx.runtimeconfig.json.
Я добавил файл вручную, и я также попыталсячтобы сделать его автоматически опубликованным в Visual Studio, добавив <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
внутри проекта.
Он генерирует следующий файл:
{
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true,
"Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true
}
}
}
Но это не решает проблему (точно такое же сообщение), и он не содержит ничего о требованиях .Net проекта.
Поэтому я попытался изменить файл с помощью таких вещей, как
{
"runtimeOptions": {
"framework": {
"name": "Microsoft.NET",
"version": "net472"
},
"configProperties": {
"System.GC.Server": true,
"Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true
}
}
}
и некоторых вариантов ("name": "Microsoft.NETCore.App", "version": "2.1.2"
), ноон завершается с совершенно другими ошибками.
Unhandled Exception: System.TypeInitializationException: The type initializer for 'xxx.UI.Program' threw an exception. ---> System.IO.FileLoadException: Could not load file or assembly 'System.Memory, Version=4.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
at System.IO.DirectoryInfo.Init(String originalPath, String fullPath, String fileName, Boolean isNormalized)
at NLog.Internal.AssemblyHelpers.GetAssemblyFileLocation(Assembly assembly)
at NLog.LogFactory.GetDefaultCandidateConfigFilePaths()+MoveNext()
at NLog.LogFactory.TryLoadFromFilePaths()
at NLog.LogFactory.get_Configuration()
at NLog.LogFactory.GetLogger(LoggerCacheKey cacheKey)
at NLog.LogFactory.GetLogger(String name)
at NLog.LogManager.GetCurrentClassLogger()
at xxx.UI.Program..cctor() in C:\xxx\xxx.UI\Program.cs:line 14
--- End of inner exception stack trace ---
at xxx.UI.Program.Main(String[] args) in C:\xxx\xxx.UI\Program.cs:line 28
Как уже говорилось ранее, то же приложение хорошо работает в IIS.«System.Memory» поставляется вместе с EXE-файлом и находится в версии 4.5.1 (согласно nuget) без проблем.
Я не могу определить правильные значения, установленные в этом файле для размещения ядра MVC.Приложение .Net 4.7 в Azure, не могли бы вы помочь?Спасибо