Соответствующее содержимое для файла конфигурации Myapp..runtimeconfig.json для приложения .Net 4.7 в Azure. - PullRequest
0 голосов
/ 04 октября 2018

Я новичок в 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, не могли бы вы помочь?Спасибо

1 Ответ

0 голосов
/ 24 октября 2018

Я отвечаю себе в последнее время: по словам кого-то из команды, и, как подтвердили наши тесты, проблема не имела ничего общего с файлом конфигурации «времени выполнения», она была связана с наличием строки подключения в файле конфигурации.Переместите его в другое место, и приложение запустится, как ожидается.

Много времени потеряно на этом, жаль, что Microsoft не справилась с этим лучше с точки зрения сообщения об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...