![](/img/trans.png)
[英]Sentry configuration in appsettings.json with Serilog in .Net Core 3 Console App
[英]Reading appsettings.json file in .NET 6 console app
如何從appsettings.json
6 控制台應用程序中的 appsettings.json 文件獲取設置?
program.cs
文件:
public class Program
{
private static ManualResetEvent _quitEvent = new ManualResetEvent(false);
private static void Main(string[] args)
{
// Setup Host
var host = CreateDefaultBuilder().Build();
host.Run();
}
private static IHostBuilder CreateDefaultBuilder()
{
return Host.CreateDefaultBuilder()
.ConfigureAppConfiguration(app =>
{
app.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
})
.ConfigureServices(services =>
{
// this is the line that has the issue
services.Configure<MailSettings>(services.Configuration.GetSection("MailSettings"));
});
}
}
上面的行拋出一個錯誤:
錯誤 CS1061
“IServiceCollection”不包含“Configuration”的定義,並且找不到接受“IServiceCollection”類型的第一個參數的可訪問擴展方法“Configuration”(是否缺少 using 指令或程序集引用?)
如何正確配置?
您可能打算使用傳入具有Configuration
屬性的HostBuilderContext
參數的委托:
.ConfigureServices((context, services) => // accept context parameter
{
services.AddSingleton<IMailService>();
services.Configure<MailSettings>(context.Configuration.GetSection("MailSettings"));
});
首先,從 NuGet 安裝Microsoft.Extensions.Configuration package。
現在寫一個這樣的方法:
private static IConfiguration GetConfig()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
return builder.Build();
}
假設您的appsettings.json文件如下所示:
現在從 Main 方法獲取appsettings.json值:
public static void Main(string[] args)
{
var config = GetConfig();
// Read DB connection
string connectionString = config.GetConnectionString("Default")
// Read other key value
string baseUri = config.GetSection("SomeApi:BaseUrl").Value;
string token = config.GetSection("SomeApi:Token").Value;
}
希望你能享受編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.