【问题标题】:Unable to connect with Steeltoe 3.0 connector to Redis无法使用 Steeltoe 3.0 连接器连接到 Redis
【发布时间】:2020-10-20 22:24:32
【问题描述】:

我最近将 Steeltoe 版本从 2.4.3 升级到 3.0.1。进行所需更改后,我的应用程序似乎无法连接到托管在 VMWare Cloud Foundry 中的 Redis。健康检查执行器已关闭并出现以下错误

RedisConnectionException:无法连接到 redis 服务器。 UnableToConnect on localhost:6379/Interactive,Initializing/NotStarted,last:NONE,origin:BeginConnectAsync,未完成:0,last-read:0s 前,last-write:0s 前,keep-alive:60s,状态:Connecting,mgr: 10 个可用的 10 个,最后一次检测信号:从不,全局:60283 秒前,v:2.1.58.34321。

我的 Program.cs 如下所示

public static class Program
{
   
    public static void Main(string[] args)
    {
       CreateHostBuilder(args).Build().Run();
    }
    
    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .AddCloudFoundryConfiguration()
            .ConfigureLogging((builderContext, loggingBuilder) =>
            {
                // Add Serilog Dynamic Logger 
                loggingBuilder.ClearProviders();
                loggingBuilder.AddDynamicSerilog();
            })
            .AddCloudFoundryActuators()
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}

我的 .csproj 如下所示。

<PackageReference Include="Serilog.Sinks.Trace" Version="2.1.0" />
<PackageReference Include="Serilog.Formatting.Compact" Version="1.1.0" />
<PackageReference Include="Steeltoe.Common.Hosting" Version="3.0.1" />
<PackageReference Include="Steeltoe.Extensions.Logging.DynamicSerilogCore" Version="3.0.1" />
<PackageReference Include="Steeltoe.Management.CloudFoundryCore" Version="3.0.1" />
<PackageReference Include="Steeltoe.Extensions.Configuration.CloudFoundryCore" Version="3.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="StackExchange.Redis" Version="2.1.58" />
<PackageReference Include="Steeltoe.Connector.ConnectorCore" Version="3.0.1" />

我的 Startup.cs 如下所示。

public class Startup
{
   
    public Startup(IConfiguration configuration, IWebHostEnvironment env)
    {
        Configuration = configuration;
        HostingEnvironment = env;
    }
         
    public IConfiguration Configuration { get; }

    public IWebHostEnvironment HostingEnvironment { get; }
         
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddRouting(options => options.LowercaseUrls = true);          
       
        // Add StackExchange IConnectionMultiplexer configured from Cloud Foundry
        services.AddRedisConnectionMultiplexer(configuration);
    }
  
    public void Configure(IApplicationBuilder app)
    {
       app.UseRouting();
              
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }
}

看起来连接器无法从 VCAP_SERVICES 获取凭据,最终默认为 localhost。任何指针为什么会这样?提前致谢

【问题讨论】:

    标签: cloud-foundry stackexchange.redis steeltoe


    【解决方案1】:

    为了在 Steeltoe 3.0 中从 VCAP_SERVICES 获取绑定,您还需要将其添加到您的 .csproj:

    <PackageReference Include="Steeltoe.Connector.CloudFoundry" Version="3.0.1" />
    

    https://docs.steeltoe.io/api/v3/connectors/usage.html#cloud-foundry

    【讨论】:

    • 嗨,蒂姆,我已经有了。我是否需要添加 Steeltoe.CloudFoundry.ConnectorCore 以及
    • 抱歉,我试图复制/粘贴/编辑参考文献,但错过了编辑部分。你需要的参考是Steeltoe.Connector.CloudFoundry ~ 你不应该混合使用 2.x 和 3.x 版本的 Steeltoe
    猜你喜欢
    • 2015-02-06
    • 2020-11-09
    • 2019-10-18
    • 1970-01-01
    • 2021-02-15
    • 2016-10-18
    • 2022-01-07
    • 2013-02-25
    相关资源
    最近更新 更多