#c# #asp.net-core #aws-lambda
#c# #asp.net-core #aws-lambda
Вопрос:
Я получаю сообщение об ошибке во время десериализации с использованием ASPNET Core на AWS Lambda с помощью C #. У меня есть атрибут below в моей лямбда-сборке:
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
У меня есть атрибут [JsonIgnore] для определенных свойств передаваемых объектов (классов). Если эти свойства вызываются в их состоянии, они выдают исключение.
Исключение возникает при передаче объекта на контроллер ядра ASPNET (или при возврате значения из контроллера).
Моя теория заключается в том, что атрибут [JsonIgnore] не соблюдается. Я не могу найти никакой документации или других тем SO, говорящих об этом.
Можете ли вы подтвердить / опровергнуть мою теорию? Есть ли какая-либо документация по этому поводу? Кто-нибудь может придумать обходной путь?
Комментарии:
1. Похоже, они используют using Newtonsoft.Json; github.com/aws/aws-lambda-dotnet/blob/master/Libraries/src /… так что он должен поддерживать [JsonIgnore]
2. Да, это то, что я подумал, но это не соответствует [JsonIgnore]
Ответ №1:
Источник для Amazon.Lambda.Serialization.Json.JsonSerializer указывает, что это «Пользовательская реализация ILambdaSerializer, которая использует Newtonsoft.Json 9.0.1», который поддерживает атрибут JsonIgnoreAttribute ( [JsonIgnore]
).
Объявление о поддержке AWS Lambda для .NET Core 3.1 представляет (и рекомендует) новый сериализатор Lambda JSON от Amazon.Lambda.Serialization.SystemTextJson.По умолчанию Lambda.Serialization.JsonSerializer, использующий System.Text.Json, встроен в .NET Core framework, который также поддерживает атрибут JsonIgnoreAttribute ( [JsonIgnore]
).