我正在将一个旧的 wcf 项目迁移到 .net core 2.0。在某些地方,代码使用 SoapFormatter 类来序列化和反序列化 Soap 格式的数据。.net core 2.0 不再支持 Soap Formatter,所以我需要替换这段代码才能开始使用 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;
}
}
如果您需要更多信息,请告诉我。如果评价不错,我也对任何第三方库开放?