我在ASPNETCore上使用GRPC,也有一个这样的模型:
syntax = "proto3";
message Blob {
string id = 1;
string path = 2;
}
问题是,当我尝试将path
属性设置为null时,它抛出了ArgumentException
。
只需运行以下代码:
new Blob { Path = null };
结果如下:
System.ArgumentNullException: Value cannot be null. (Parameter 'value')
at Google.Protobuf.ProtoPreconditions.CheckNotNull[T](T value, String name)
at Grpc.Blob.set_Path(String value)
发布于 2020-04-17 00:45:50
null
没有null的概念;由于proto3将en空字符串视为“默认,不发送”,这意味着Protobuf和""
之间没有负载差异。所以:也许不要尝试发送null
或者: protobuf-net (通过protobuf-net.Grpc可以很好地使用gRPC,它只附加到Google/Microsoft )在这里可以很好地工作,而且由于它没有绑定到proto3,所以可以使它以不同的方式对待null
和""
(显式地将""
作为零长度字符串发送,而根本不发送null
)。您不需要protobuf-net的.proto,但如果您有一个:https://protogen.marcgravell.com/
https://stackoverflow.com/questions/61255063
复制相似问题