AgileConfig icon indicating copy to clipboard operation
AgileConfig copied to clipboard

builder.Host.UseAgileConfig()与SkyWalking不兼容

Open gudieaofei opened this issue 3 years ago • 3 comments

当项目引入SkyWalking并设置了环境变量: Environment.SetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES", "SkyAPM.Agent.AspNetCore"); 调用builder.Host.UseAgileConfig()会报错: System.InvalidOperationException:“Unable to resolve service for type 'Microsoft.Extensions.Hosting.IHostEnvironment' while attempting to activate 'SkyApm.Agent.Hosting.HostingEnvironmentProvider'.” 但如果使用以下方式是可以正常使用的,麻烦看下如何处理 builder.Host.ConfigureAppConfiguration((context, config) => { var configClient = new ConfigClient(); config.AddAgileConfig(configClient); });

gudieaofei avatar Oct 12 '22 12:10 gudieaofei

      public static IHostBuilder UseAgileConfig(this IHostBuilder builder, Action<ConfigChangedArg> e = null)
        {
            builder.ConfigureAppConfiguration((_, cfb) =>
            {
                cfb.AddAgileConfig(e);
            })
            .ConfigureServices((ctx, services) =>
            {
                services.AddAgileConfig();
            });

            return builder;
        }

UseAgileConfig 本质上就是调用了 ConfigureAppConfiguration 的 AddAgileConfig 方法,就是多了 services.AddAgileConfig(); 一步而已 。问题可能出在这。 方便把你的 program.cs 的代码贴出来看看吗?

kklldog avatar Oct 12 '22 16:10 kklldog

`Environment.SetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES", "SkyAPM.Agent.AspNetCore");

var builder = WebApplication.CreateBuilder(args); builder.Host.UseAgileConfig();`

很简单的代码,引入SkyWalking的环境变量后,执行到UseAgileConfig那里就抛异常了

gudieaofei avatar Oct 13 '22 03:10 gudieaofei

那我得查一下 skyamp 的 client 有啥骚操作

kklldog avatar Oct 13 '22 10:10 kklldog