gpt4 book ai didi

c# - Grpc.Core.RpcException "Failed to deserialize response message.."或 "InvalidOperationException: Length mismatch"

转载 作者:行者123 更新时间:2023-12-04 16:39:47 33 4
gpt4 key购买 nike

我在 .NET Core 3.1 上运行 gRPC 服务并尝试从 .NET Framework 4.7.2 客户端进行调用。我正在使用 protobuf-net 重用现有的 WCF 数据协定。今天,当响应对象的一个​​字段为非空时,我注意到以下意外的客户端行为。

Grpc.Core.RpcException: 'Status(StatusCode="Internal", Detail="Failed to deserialize response message.")

  • 软件包:protobuf-net v2.4.4、Grpc v2.30.0、protobuf-net.Grpc v1.0.90、protobuf-net.Grpc.Native v1.0.90 , Google.Protobuf v3.12.2

这是一个说明数据契约(Contract)一般结构的示例 - 在本例中为 Response<PersonData>是响应,PersonDataList是非空字段。

   [DataContract]  
public class Response<TValue>{
[DataMember(Order = 1)]
public TValue Value;
}

[DataContract]
public class PersonData : Data {
[DataMember(Order = 1)]
public IList<PersonDataItem> PersonDataList;
}

[DataContract]
public PersonDataItem {
[DataMember(Order = 1)]
public PersonDataType Type {get; private set;}

[DataMember(Order = 2)]
public DateTime? Time {get; private set;}

....
[DataContract]
public enum PersonDataType : int {

[EnumMember]
Child = 1,
[EnumMember]
Adult = 2
}
}

[DataContract]
[ProtoInclude(1, typeof(PersonData)]
public class Data {
[DataMember(Order = 1)]
public string Name
}

让我感到困惑的是,我在其他数据协定中使用了类似或相同的模式,在反序列化响应时不会抛出异常。我做了一些搜索,找到了 this issue from 2019指出不同的 Google.Protobuf 版本可能是错误的来源(但这里似乎并非如此)。

有没有人见过这个异常?我不确定这是我的数据契约(Contract)问题还是某些包版本不匹配。非常感谢任何想法或建议!

我还尝试更新到 protobuf-net v3.0.0 但每次客户端调用都会出现新的客户端异常: Grpc.Core.RpcException: 'Status(StatusCode="Unknown", Detail="Exception was thrown by handler. InvalidOperationException: Length mismatch; calculated '63', actual '58'"...) 这似乎是一个不同的问题,我目前的猜测是它可能与重大更改有关:动态输入 protobuf-net v3 .

最佳答案

我正在使用 Visual Studio 2022 预览版,但遇到了这个问题。

如前所述here , Visual Studio 2022 中存在错误。

我应用了以下提到的解决方法,它对我有用。请参阅下面的屏幕截图。

如下所示将“热重载 CSS 更改”设置为 false。

Tools Options in Visual Studio 2022

Hot Reload CSS Changes

关于c# - Grpc.Core.RpcException "Failed to deserialize response message.."或 "InvalidOperationException: Length mismatch",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63240268/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com