Как я могу заменить сериализацию и десериализацию SoapFormatter на.net core 2.0?

Я работаю над переносом старого проекта wcf на.net core 2.0. В некоторых местах код использует класс SoapFormatter для сериализации и десериализации данных в формате Soap. Форматирование Soap больше не поддерживается в.net core 2.0, поэтому мне нужно заменить часть кода, чтобы начать использовать XMLSerialization. Уже есть некоторые данные, хранящиеся в базе данных, которая сериализуется с помощью SoapFormatter, поэтому я не могу перенести уже сохраненные данные. Можно ли как-нибудь сериализовать и десериализовать уже существующие данные с помощью сериализации Xml, не нарушая ее?

Кусок кода, использующий десериализацию с использованием soapformatter:

var buffer = Convert.FromBase64String(piqBlob);
---------

public UserQuestionAnswers Deserialize(byte[] buffer)
        {
        using (var stream = new MemoryStream(buffer))
        {
            var questionsAnswers =
                Serializer.Deserialize(stream) as BusinessProcesses.Authentication.UserQuestionAnswers;
            if (questionsAnswers == null) return null;

            var uQuestionAnswers = new UserQuestionAnswers
            {
                Domain = questionsAnswers.Domain,
                KeyLabel = questionsAnswers.KeyLabel,
                Username = questionsAnswers.Username,
                UserUid = questionsAnswers.UserUid,
                QuestionAnswers = (from item in questionsAnswers.QuestionAnswers
                                   where item != null
                                   select new QuestionAnswer
                                   {
                                       QuestionId = item.QuestionId,
                                       QuestionHash = item.QuestionHash,
                                       AnswerHmac = item.AnswerHMAC,
                                       QuestionText = string.Empty
                                   }).ToArray()
            };
            return uQuestionAnswers;
        }
    }

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация по этому вопросу. Я также открыт для любой библиотеки третьей части, если есть хороший рейтинг?

0 ответов

Другие вопросы по тегам