gpt4 book ai didi

c# - 正确地将配置注入(inject) ASP Core

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:27 25 4
gpt4 key购买 nike

我们在服务结构实例中托管一个 ASP Core Web API。我想将所有配置转发到核心应用程序。我用这个方法

https://dzimchuk.net/configuring-asp-net-core-applications-in-service-fabric/

然后我使用 ConfigureAppConfiguration

调用它
protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
{
return new[]
{
new ServiceInstanceListener(serviceContext =>
new KestrelCommunicationListener(serviceContext, "ServiceEndpoint", (url, listener) =>
{
ServiceEventSource.Current.ServiceMessage(serviceContext, $"Starting Kestrel on {url}");

return new WebHostBuilder()
.UseKestrel()
.ConfigureServices(
services => services.AddSingleton(serviceContext))
.ConfigureAppConfiguration(builder => builder.AddServiceFabricConfiguration(serviceContext))
.UseContentRoot(Directory.GetCurrentDirectory())
.UseStartup<Startup>()
.UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.UseReverseProxyIntegration)
.UseUrls(url)
.Build();
}))
};
}

启动类中的感染配置确实应用了配置,如连接字符串和日志记录

enter image description here

但它似乎没有完全嵌入到框架中。

例如,我需要使用配置 services.AddApplicationInsightsTelemetry(Configuration); 显式提供 ApplicationInsights,否则它不会获取仪器 key 。并且日志记录不起作用(未应用日志级别)。

更新:

我尝试在没有服务结构的标准核心项目中做一个自定义配置提供程序,它工作正常。

public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(builder => builder.AddServiceFabricConfiguration())
.UseStartup<Startup>();
}

internal class ServiceFabricConfigurationProvider : ConfigurationProvider
{

public override void Load()
{
Data["Logging:Debug:LogLevel:Default"] = "Information";
}
}

internal class ServiceFabricConfigurationSource : IConfigurationSource
{


public IConfigurationProvider Build(IConfigurationBuilder builder)
{
return new ServiceFabricConfigurationProvider();
}
}

public static class ServiceFabricConfigurationExtensions
{
public static IConfigurationBuilder AddServiceFabricConfiguration(this IConfigurationBuilder builder)
{
builder.Add(new ServiceFabricConfigurationSource());
return builder;
}
}

看来我为 Fabric Land 服务的东西没有正常工作。

编辑:复制项目 https://github.com/AndersMalmgren/ServiceFabricLoggingRepro

最佳答案

Service Fabric 项目模板与标准核心项目不同。

Service Fabric 项目模板做

return new WebHostBuilder()

虽然标准核心项目模板可以

WebHost.CreateDefaultBuilder(args)

我已经建议微软统一他们的项目模板 https://github.com/microsoft/service-fabric/issues/319#issuecomment-486116026

我还在上面提到了应用洞察。它没有直接关系。 Application Insights 不注入(inject) IConfiguration,而是查找 json 文件。我会说这是一个错误,但修复它会是一个重大更改

https://github.com/microsoft/ApplicationInsights-aspnetcore/issues/867

关于c# - 正确地将配置注入(inject) ASP Core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55594446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com