【问题标题】:Connection Refused - Redis for Data Protection Keys in ASP.Net Core 2.1拒绝连接 - Redis 用于 ASP.Net Core 2.1 中的数据保护密钥
【发布时间】:2019-02-26 08:20:32
【问题描述】:

我正在阅读 Microsoft 的这篇文章: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/implementation/key-storage-providers?view=aspnetcore-2.1

我正在尝试执行以下操作:

    services.AddDataProtection()
        .PersistKeysToRedis(ConnectionMultiplexer.Connect("localhost"));

错误堆栈:

app    | Unhandled Exception: System.AggregateException: One or more errors occurred. (Connection refused) ---> System.Net.Sockets.SocketException: Connection refused
app    |    at System.Net.Sockets.Socket.BeginConnectEx(EndPoint remoteEP, Boolean flowContext, AsyncCallback callback, Object state)
app    |    at System.Net.Sockets.Socket.UnsafeBeginConnect(EndPoint remoteEP, AsyncCallback callback, Object state, Boolean flowContext)
app    |    at System.Net.Sockets.Socket.PostOneBeginConnect(MultipleAddressConnectAsyncResult context)
app    | --- End of stack trace from previous location where exception was thrown ---
app    |    at System.Net.Sockets.Socket.DoMultipleAddressConnectCallback(Object result, MultipleAddressConnectAsyncResult context)
app    |    at System.Net.Sockets.Socket.DoDnsCallback(IAsyncResult result, MultipleAddressConnectAsyncResult context)
app    |    at System.Net.Sockets.Socket.BeginConnect(String host, Int32 port, AsyncCallback requestCallback, Object state)
app    |    at System.Net.Sockets.Socket.ConnectAsync(String host, Int32 port)
app    |    at System.Net.Sockets.SocketTaskExtensions.ConnectAsync(Socket socket, String host, Int32 port)
app    |    at StackExchange.Redis.SocketManager.BeginConnect(EndPoint endpoint, ISocketCallback callback, ConnectionMultiplexer multiplexer, TextWriter log) in c:\code\StackExchange.Redis\StackExchange.Redis\StackExchange\Redis\SocketManager.cs:line 194

我正在使用 Docker:

redis:
    image: redis:alpine
    container_name: redis
    ports:
      - "6379:6379"

有什么想法吗?

【问题讨论】:

    标签: c# docker asp.net-core redis data-protection


    【解决方案1】:

    你需要引用容器和端口

    services.AddDataProtection()
            .PersistKeysToRedis(ConnectionMultiplexer.Connect("redis:6379"));
    

    我还在配置中添加了 abortConnect=false"

    REDIS_CONNECTION_STRING = "redis:6379,abortConnect=false"
    
    
    var redis = ConnectionMultiplexer.Connect(Environment.GetEnvironmentVariable("REDIS_CONNECTION_STRING"));
    services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Keys");
    

    【讨论】:

      猜你喜欢
      • 2017-02-17
      • 2018-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-01-24
      • 2019-02-04
      • 2021-12-21
      • 1970-01-01
      • 2017-07-10
      相关资源
      最近更新 更多