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
/// 4MB(4 * 1024 * 1024) * N, 4MB是Grpc默认传输大小。
private const int GRPC_MAX_RECEIVE_MESSAGE_LENGTH = (4 * 1024 * 1024) * 3;
#endregion

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

// 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)

你可能感兴趣的:(C# Grpc传输数据限制)