在我的.NET Framework 4.6.1应用程序中,我正在使用StackExchange.Redis.StrongName 1.2.6连接到Azure Redis。 这是代码
public RedisContext(string connectionString = null)
{
if (connectionString == null) return;
Lazy<ConfigurationOptions> lazyConfiguration
= new Lazy<ConfigurationOptions>(() => ConfigurationOptions.Parse(connectionString));
var configuration = lazyConfiguration.Value;
configuration.SslProtocols = SslProtocols.Tls12;//just added
configuration.AbortOnConnectFail = false;
Lazy<ConnectionMultiplexer> lazyConnection =
new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect(configuration));
_connectionMultiplexer = lazyConnection.Value;
LogProvider.IsDisabled = true;
var connectionEndpoints = _connectionMultiplexer.GetEndPoints();
_lockFactory = new RedisLockFactory(connectionEndpoints.Select(endpoint => new RedisLockEndPoint
{
EndPoint = endpoint,
Password = configuration.Password,
Ssl = configuration.Ssl
}));
}
在Azure中,我已将Redis资源更改为使用TLS1.2,并在代码中添加了以下行:
configuration.SslProtocols = SslProtocols.Tls12; //刚刚添加
现在,什么都没有了。这是我在Application Insights中遇到的错误:
连接到Redis时出错。无法连接到Redis服务器。 ConnectTimeout
我还尝试将“,ssl = True,sslprotocols = tls12”添加到redis连接字符串中,但结果相同。
答案 0 :(得分:0)
尝试引用StackExchange.Redis而不是StackExchange.Redis.StrongName。我已经在几个项目中做到了这一点,现在可以了。但是,某些第三方仍然使用StrongName而不是普通的redis。现在不建议使用StackExchange.Redis.StrongName。 https://github.com/Azure/aspnet-redis-providers/issues/107。我假设您正在尝试连接到Azure Redis,因为它们停止了对TLS 1.0和1.1的支持?