builder.Host.UseAgileConfig()与SkyWalking不兼容
当项目引入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); });
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 的代码贴出来看看吗?
`Environment.SetEnvironmentVariable("ASPNETCORE_HOSTINGSTARTUPASSEMBLIES", "SkyAPM.Agent.AspNetCore");
var builder = WebApplication.CreateBuilder(args); builder.Host.UseAgileConfig();`
很简单的代码,引入SkyWalking的环境变量后,执行到UseAgileConfig那里就抛异常了
那我得查一下 skyamp 的 client 有啥骚操作