无法将Steeltoe 3.0连接器连接到Redis

问题描述

我最近将Steeltoe版本从2.4.3升级到了3.0.1。进行必要的更改后,看来我的应用程序无法连接到VMWare Cloud Foundry中托管的Redis。卫生检查执行器故障并出现以下错误

RedisConnectionException:无法连接到Redis服务器。本地主机上的UnabletoConnect:6379 / Interactive,正在初始化/未启动,最后:无,源:BeginConnectAsync,未完成:0,最后读取:0s前,最后写入:0s前,keep-alive:60s,状态:正在连接,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。任何指针为何如此?预先感谢

解决方法

为了在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