diff --git a/src/Momento.Sdk/Internal/ControlGrpcManager.cs b/src/Momento.Sdk/Internal/ControlGrpcManager.cs index e357ba39..4284a9bc 100644 --- a/src/Momento.Sdk/Internal/ControlGrpcManager.cs +++ b/src/Momento.Sdk/Internal/ControlGrpcManager.cs @@ -95,21 +95,27 @@ public ControlGrpcManager(IConfiguration config, string authToken, string endpoi endpoint = $"web.{endpoint}"; #endif var uri = $"https://{endpoint}"; - this.channel = GrpcChannel.ForAddress(uri, new GrpcChannelOptions() + + var channelOptions = new GrpcChannelOptions { Credentials = ChannelCredentials.SecureSsl, MaxReceiveMessageSize = Internal.Utils.DEFAULT_MAX_MESSAGE_SIZE, MaxSendMessageSize = Internal.Utils.DEFAULT_MAX_MESSAGE_SIZE, + }; #if NET5_0_OR_GREATER - HttpHandler = new System.Net.Http.SocketsHttpHandler + + if (SocketsHttpHandler.IsSupported) // see: https://github.com/grpc/grpc-dotnet/blob/098dca892a3949ade411c3f2f66003f7b330dfd2/src/Shared/HttpHandlerFactory.cs#L28-L30 + { + channelOptions.HttpHandler = new SocketsHttpHandler { EnableMultipleHttp2Connections = config.TransportStrategy.GrpcConfig.SocketsHttpHandlerOptions.EnableMultipleHttp2Connections, PooledConnectionIdleTimeout = config.TransportStrategy.GrpcConfig.SocketsHttpHandlerOptions.PooledConnectionIdleTimeout - } + }; + } #elif USE_GRPC_WEB - HttpHandler = new GrpcWebHandler(new HttpClientHandler()) + channelOptions.HttpHandler = new GrpcWebHandler(new HttpClientHandler()); #endif - }); + this.channel = GrpcChannel.ForAddress(uri, channelOptions); List
headers = new List
{ new Header(name: Header.AuthorizationKey, value: authToken), new Header(name: Header.AgentKey, value: version), new Header(name: Header.RuntimeVersionKey, value: runtimeVersion) }; CallInvoker invoker = this.channel.CreateCallInvoker(); diff --git a/src/Momento.Sdk/Internal/DataGrpcManager.cs b/src/Momento.Sdk/Internal/DataGrpcManager.cs index 09960dc0..17b308c5 100644 --- a/src/Momento.Sdk/Internal/DataGrpcManager.cs +++ b/src/Momento.Sdk/Internal/DataGrpcManager.cs @@ -285,11 +285,14 @@ internal DataGrpcManager(IConfiguration config, string authToken, string endpoin channelOptions.MaxSendMessageSize = Internal.Utils.DEFAULT_MAX_MESSAGE_SIZE; #if NET5_0_OR_GREATER - channelOptions.HttpHandler = new SocketsHttpHandler + if (SocketsHttpHandler.IsSupported) // see: https://github.com/grpc/grpc-dotnet/blob/098dca892a3949ade411c3f2f66003f7b330dfd2/src/Shared/HttpHandlerFactory.cs#L28-L30 { - EnableMultipleHttp2Connections = config.TransportStrategy.GrpcConfig.SocketsHttpHandlerOptions.EnableMultipleHttp2Connections, - PooledConnectionIdleTimeout = config.TransportStrategy.GrpcConfig.SocketsHttpHandlerOptions.PooledConnectionIdleTimeout - }; + channelOptions.HttpHandler = new SocketsHttpHandler + { + EnableMultipleHttp2Connections = config.TransportStrategy.GrpcConfig.SocketsHttpHandlerOptions.EnableMultipleHttp2Connections, + PooledConnectionIdleTimeout = config.TransportStrategy.GrpcConfig.SocketsHttpHandlerOptions.PooledConnectionIdleTimeout + }; + } #elif USE_GRPC_WEB channelOptions.HttpHandler = new GrpcWebHandler(new HttpClientHandler()); #endif