C# Grpc传输数据限制

今天,团队里遇到一个问题

Grpc 报错误信息 :
  ExceptionMessage:RpcException Status(StatusCode=ResourceExhausted, Detail="Received message larger than max (4314472 vs. 4194304)")

网上找了一会,也找到一些 更改gRPC消息传输大小的方法,但没有.Net的。
参考:https://blog.csdn.net/l491453302/article/details/81904067
参考上面的从gRpc源码里找到了实现方式

在创建 Server的时候,使用ChannelOption来更改传输大小就可以了。

#region Consts
/// <summary>4MB(4 * 1024 * 1024) * N, 4MB是Grpc默认传输大小。</summary>
private const int GRPC_MAX_RECEIVE_MESSAGE_LENGTH = (4 * 1024 * 1024) * 3;
#endregion

#region Set Channel Options
var channelOptions = new List<ChannelOption>();

// add max message length option 设最大接收传输大小
channelOptions.Add(new ChannelOption(ChannelOptions.MaxReceiveMessageLength, GRPC_MAX_RECEIVE_MESSAGE_LENGTH));
#endregion

Server server = new Server(channelOptions)
{
    Services = { RoleService},
    Ports = { new ServerPort(Host, Prot, ServerCredentials.Insecure) }
};

另外 ChannelOptions还可以做很多的工作 ,可以参考:
  https://github.com/grpc/grpc/blob/master/src/csharp/Grpc.Core/ChannelOptions.cs

 Grpc的全局日志也可以用GrpcEnvironment.SetLogger(ILogger customLogger)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容