У меня есть решение функций *. 1041 * Core 2.2 Azure, на которое я пытаюсь перейти. Net Core 3.1. Я сделал следующие шаги:
- Я изменил целевую среду файлов проекта на netcoreapp3.1
- Я обновил пакеты Nuget до последней стабильной версии
- Я обновил глобальный. json до
{
"sdk": {
"version": "3.1.100"
}
}
У меня нет PackageReference для «Microsoft.AspNetCore.App» в файлах проекта Я установил SDK из
https://dotnet.microsoft.com/download/dotnet-core/3.1 Я запустил
pm install -g azure-functions-core-tools@3
Все прошло нормально, но во время выполнения у меня возникла проблема с сериализацией:
Newtonsoft. Json: Обнаружена самореференция l oop с типом "Платформа" , Путь '[0] .hierarchy.platform'. "
У меня есть 2 DTO:
public class Platform
{
[JsonRequired]
public string PlatformId { get; set; }
[JsonRequired]
public Guid HierarchyUuid { get; set; }
public Hierarchy Hierarchy { get; set; }
}
public class Hierarchy
{
[JsonRequired]
public string HierarchyId { get; set; }
[JsonIgnore]
public IEnumerable<Platform> Platform { get; set; }
}
Я понимаю причину проблемы, но с. Net Core 2.2 в качестве целевой платформы эти DTO были успешно сериализованы. Как упоминалось Microsoft, в версии 3.1 изменена сериализация, и я думаю, что это является причиной проблемы. Я заменил Newtonsoft. Json на System.Text. Json но все еще имел ту же проблему. Наконец, чтобы предотвратить циклические ссылки между Платформой и Иерархией, я сохранил Newtonsoft. Json и добавил в метод FunctionStartup.Configure следующее:
builder.Services.AddMvcCore().AddNewtonsoftJson(options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore);
Для чего нужна Microsoft. AspNetCore. Mvc .Newtonsoft Json пакет.
Когда я установил версию пакета 3.1.1, я получил ошибку сборки
Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'Microsoft.AspNetCore.Mvc.Core, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.
Кто-нибудь есть идея, почему у меня это ошибка и как решить проблему?