无法解析类型:System.String、System.Private.CoreLib、版本 4.0.0.0 - Asp.net 核心 (.net 核心 2.1) 服务器、.NET 4.6.1 客户端

Unable to resolve type: System.String, System.Private.CoreLib, Version 4.0.0.0 - Asp.net Core (.net core 2.1) server, .NET 4.6.1 Client

我有一个用 .net 4.6.1 编写的遗留客户端应用程序使用 WCF 服务器的数据。 我正在尝试用 ASP.NET 核心应用程序和 Protobuf 序列化替换 WCF 服务器。 我正在使用库:

尝试在客户端反序列化 returned 内容,如下所示:

var resultData = ProtoBuf.Serializer.Deserialize<ExcelDropdownNode>(response.Content.ReadAsStreamAsync().Result);

但我在 protobuf 库中遇到错误:

Unable to resolve type: System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e (you can use the TypeModel.DynamicTypeFormatting event to provide a custom mapping)

知道我做错了什么吗?

附带说明一下,我必须 return 服务器中的动态数据,而 protobuf 对此并不满意。我用 DynamicType=True 标记了 List<object> 属性 并将所有 ValueTypes 更改为字符串(即 4 -> “4”)。这允许服务器端的序列化工作。

ExcelDropDownCode中的动态属性如下:

[ProtoMember(1, DynamicType = true)]
public List<object> DataItems
{
    get { return dataItems; }
    set { dataItems = value; }
}

通过在客户端添加以下类型解析代码设法解决:

RuntimeTypeModel.Default.DynamicTypeFormatting += (sender, args) => {
if (args.FormattedName.Contains("System.String, System.Private.CoreLib"))
{
    args.Type = typeof(string);
}};