我正在嘗試在 .net 6 專案中獲取配置部分,我遇到的問題是它GetSection()沒有按預期運行,它不回傳該部分,它只是空的。這是一些代碼片段:
public static IServiceCollection AddServices(this IServiceCollection services, IConfiguration config)
{
var e = config["EmailConfig"];
var s = config.GetSection("EmailConfig:Server");
IConfigurationSection emailConfigSection = config.GetSection(EmailConfig.Name);
services.Configure<EmailConfig>(emailConfigSection);
return services;
}
EmailConfig.Name是一個常數,等于"EmailConfig"
變數值看起來像這樣e = null,s = "server"而且emailConfigSection = null,那是什么原因呢?為什么我不能獲得完整的部分
appsettings.json如果需要的話:
{
"EmailConfig": {
"Server": "server",
"Port": 587,
"UseSSL": true,
"Username": "name",
"Password": "password",
"DefaultSender": "sender"
}
}

uj5u.com熱心網友回復:
你需要做:
var e = config.GetSection("EmailConfig");
不是
var e = config["EmailConfig"];
或 這是獲得所需結果的更詳細方法。
//這在運行時呼叫 Startup.cs
Public Class Startup
{
private readonly IConfiguration _configuration;
public Startup(IConfiguration configuration)
{
_configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
//set up config
services.AddOptions();
services.Configure<EmailConfig> (_configuration.GetSection("EmailConfig"));
}
}
我們可以創建一個模型來稍后訪問我們的配置(EmailConfig)
public class EmailConfig
{
public string Server { get; set; }
public int Port { get; set; }
public bool UseSSL { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string DefaultSender { get; set; }
}
稍后獲取您的配置值: 假設我們需要訪問服務器
Public class TestApi
{
private readonly EmailConfig _emailConfig
public TestApi(IOptions<EmailConfig) emailConfig)
{
_emailConfig = emailConfig.Value
}
public string ReturnServer
{
var serverName = _emailConfig.Server;
return serverName;
}
}
uj5u.com熱心網友回復:
如果您為 EmailConfig 定義了模型類,請使用以下代碼。
IConfigurationSection emailConfigSection = config.GetSection(EmailConfig.Name).Get<EmailConfig>();
否則,您需要從其屬性名稱中獲取鍵值,如下所示:
IConfigurationSection emailConfigSection = config.GetSection(EmailConfig.Name);
var server = emailConfigSection["Server"];
var port = emailConfigSection["Port"];
....
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/455902.html
