From 419bcbdf7aa5c85372bfb4423f5dc8bfd21d9c5e Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sun, 7 Dec 2025 17:04:02 +0330 Subject: [PATCH] Fix: Support both HTTP and HTTPS channel credentials --- .../Common/Configure/ConfigureService.cs | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/BackOffice/Common/Configure/ConfigureService.cs b/src/BackOffice/Common/Configure/ConfigureService.cs index 288f049..a6684e6 100644 --- a/src/BackOffice/Common/Configure/ConfigureService.cs +++ b/src/BackOffice/Common/Configure/ConfigureService.cs @@ -132,27 +132,28 @@ public static class ConfigureServices var credentials = CallCredentials.FromInterceptor(async (context, metadata) => { var provider = serviceProvider.GetRequiredService(); - // var accessToken = await provider.RequestAccessToken(); - // accessToken.TryGetToken(out var token); var token = await provider.GetTokenAsync(); if (!string.IsNullOrEmpty(token)) { - // Console.WriteLine($"Authorization Bearer {token.Value}"); metadata.Add("Authorization", $"Bearer {token}"); } - await Task.CompletedTask; }); - // SslCredentials is used here because this channel is using TLS. - // CallCredentials can't be used with ChannelCredentials.Insecure on non-TLS channels. + // تشخیص HTTP یا HTTPS + var isHttps = address.StartsWith("https://", StringComparison.OrdinalIgnoreCase); + + var channelCredentials = isHttps + ? ChannelCredentials.Create(new SslCredentials(), credentials) + : ChannelCredentials.Create(ChannelCredentials.Insecure, credentials); + var channel = GrpcChannel.ForAddress(address, new GrpcChannelOptions { - UnsafeUseInsecureChannelCallCredentials = true, - Credentials = ChannelCredentials.Create(new SslCredentials(), credentials), + UnsafeUseInsecureChannelCallCredentials = !isHttps, // فقط برای HTTP + Credentials = channelCredentials, HttpClient = httpClient, - MaxReceiveMessageSize = 1000 * 1024 * 1024, // 1 GB - MaxSendMessageSize = 1000 * 1024 * 1024 // 1 GB + MaxReceiveMessageSize = 1000 * 1024 * 1024, + MaxSendMessageSize = 1000 * 1024 * 1024 }); return channel.Intercept(new ErrorHandlerInterceptor()); }