Fix: Support both HTTP and HTTPS channel credentials
This commit is contained in:
@@ -132,27 +132,28 @@ public static class ConfigureServices
|
||||
var credentials = CallCredentials.FromInterceptor(async (context, metadata) =>
|
||||
{
|
||||
var provider = serviceProvider.GetRequiredService<ITokenProvider>();
|
||||
// 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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user