Asp.NET?Core?WebApi?配置文件詳細(xì)說(shuō)明
在 ASP.NET Core Web API 中,配置文件(如 appsettings.json)是管理應(yīng)用程序設(shè)置的核心部分。ASP.NET Core 提供了一套靈活的配置系統(tǒng),允許開(kāi)發(fā)者從多種來(lái)源加載配置數(shù)據(jù),并根據(jù)需要使用這些配置。
以下是關(guān)于如何在 ASP.NET Core Web API 中獲取和使用配置文件的詳細(xì)說(shuō)明:
1. 配置文件的基本結(jié)構(gòu)
默認(rèn)情況下,ASP.NET Core 使用 appsettings.json 文件作為主要的配置文件。以下是一個(gè)典型的 appsettings.json 文件示例:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"Jwt": {
"Key": "YourSecretKeyForJwtAuthentication",
"Issuer": "YourIssuer",
"Audience": "YourAudience"
},
"Database": {
"ConnectionString": "Server=your-server;Database=your-db;User Id=your-user;Password=your-password;"
}
}Logging:定義日志記錄級(jí)別。AllowedHosts:指定允許訪問(wèn)的主機(jī)。Jwt:JWT 鑒權(quán)相關(guān)的配置(密鑰、簽發(fā)者、受眾等)。Database:數(shù)據(jù)庫(kù)連接字符串。
2. 配置文件的加載與綁定
ASP.NET Core 使用 IConfiguration 接口來(lái)加載和訪問(wèn)配置數(shù)據(jù)。以下是配置文件的加載和使用的步驟:
(1) 加載配置文件
在 Program.cs 或 Startup.cs 中,ASP.NET Core 默認(rèn)會(huì)加載 appsettings.json 和環(huán)境特定的配置文件(如 appsettings.Development.json)。例如:
var builder = WebApplication.CreateBuilder(args);
WebApplication.CreateBuilder 會(huì)自動(dòng)加載以下內(nèi)容:
appsettings.json- 環(huán)境特定的配置文件(如
appsettings.{Environment}.json) - 環(huán)境變量
- 命令行參數(shù)
(2) 使用 IConfiguration 獲取配置值
builder.Configuration 是一個(gè) IConfiguration 實(shí)例,可以通過(guò)它直接訪問(wèn)配置值。例如:
var jwtKey = builder.Configuration["Jwt:Key"];
var dbConnectionString = builder.Configuration["Database:ConnectionString"];
Console.WriteLine($"JWT Key: {jwtKey}");
Console.WriteLine($"DB Connection String: {dbConnectionString}");(3) 綁定到強(qiáng)類型對(duì)象
為了更方便地使用配置,可以將配置綁定到一個(gè)強(qiáng)類型的類。例如:
public class JwtSettings
{
public string Key { get; set; }
public string Issuer { get; set; }
public string Audience { get; set; }
}
public class DatabaseSettings
{
public string ConnectionString { get; set; }
}然后通過(guò) GetSection 方法綁定到這些類:
var jwtSettings = builder.Configuration.GetSection("Jwt").Get<JwtSettings>();
var databaseSettings = builder.Configuration.GetSection("Database").Get<DatabaseSettings>();
Console.WriteLine($"JWT Issuer: {jwtSettings.Issuer}");
Console.WriteLine($"DB Connection String: {databaseSettings.ConnectionString}");3. 注冊(cè)配置到依賴注入容器
如果需要在多個(gè)地方使用配置,可以將配置注冊(cè)到依賴注入容器中。例如:
builder.Services.Configure<JwtSettings>(builder.Configuration.GetSection("Jwt"));
builder.Services.Configure<DatabaseSettings>(builder.Configuration.GetSection("Database"));然后在需要的地方通過(guò)構(gòu)造函數(shù)注入 IOptions<T> 來(lái)使用配置:
using Microsoft.Extensions.Options;
public class AuthService
{
private readonly JwtSettings _jwtSettings;
public AuthService(IOptions<JwtSettings> jwtSettings)
{
_jwtSettings = jwtSettings.Value;
}
public void PrintJwtKey()
{
Console.WriteLine($"JWT Key: {_jwtSettings.Key}");
}
}4. 環(huán)境特定的配置文件
ASP.NET Core 支持基于環(huán)境的配置文件。例如:
- 開(kāi)發(fā)環(huán)境:
appsettings.Development.json - 生產(chǎn)環(huán)境:
appsettings.Production.json
這些文件會(huì)覆蓋 appsettings.json 中的相同配置項(xiàng)。環(huán)境由 ASPNETCORE_ENVIRONMENT 環(huán)境變量決定。
例如,appsettings.Development.json 可能包含開(kāi)發(fā)環(huán)境特定的配置:
{
"Logging": {
"LogLevel": {
"Default": "Debug"
}
}
}可以通過(guò)以下方式檢查當(dāng)前環(huán)境:
if (builder.Environment.IsDevelopment())
{
Console.WriteLine("Running in Development environment");
}
else if (builder.Environment.IsProduction())
{
Console.WriteLine("Running in Production environment");
}5. 其他配置源
除了 appsettings.json,ASP.NET Core 還支持從其他來(lái)源加載配置,包括:
(1) 環(huán)境變量
可以通過(guò)環(huán)境變量覆蓋配置值。例如:
export Jwt__Key="NewSecretKey"
(2) 命令行參數(shù)
啟動(dòng)應(yīng)用時(shí)通過(guò)命令行傳遞參數(shù)。例如:
dotnet run --Jwt:Key="CommandLineKey"
(3) 用戶機(jī)密(Secret Manager)
在開(kāi)發(fā)環(huán)境中,可以使用 Secret Manager 工具存儲(chǔ)敏感信息,避免將它們提交到版本控制系統(tǒng)中。運(yùn)行以下命令添加用戶機(jī)密:
dotnet user-secrets set "Jwt:Key" "SecretFromUserSecrets"
6. 總結(jié)
ASP.NET Core 的配置系統(tǒng)非常靈活,以下是關(guān)鍵點(diǎn)的總結(jié):
- 默認(rèn)加載:
appsettings.json和環(huán)境特定的配置文件會(huì)被自動(dòng)加載。 - 訪問(wèn)配置:通過(guò)
IConfiguration接口可以直接訪問(wèn)配置值。 - 綁定到強(qiáng)類型對(duì)象:可以將配置綁定到強(qiáng)類型的類,方便使用。
- 注冊(cè)到依賴注入:通過(guò)
Configure<T>方法將配置注冊(cè)到 DI 容器中。 - 多來(lái)源支持:支持從環(huán)境變量、命令行參數(shù)、用戶機(jī)密等多種來(lái)源加載配置。
通過(guò)合理使用配置系統(tǒng),可以讓?xiě)?yīng)用程序更加靈活、可維護(hù),并且適配不同的運(yùn)行環(huán)境。
到此這篇關(guān)于Asp.NET Core WebApi 配置文件的文章就介紹到這了,更多相關(guān)Asp.NET Core WebApi 配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ASP.NET Core3.1 Ocelot認(rèn)證的實(shí)現(xiàn)
這篇文章主要介紹了ASP.NET Core3.1 Ocelot認(rèn)證的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
.NET 資源文件resx、Resources詳細(xì)說(shuō)明
和大家講一下.net對(duì)資源文件的使用做一下說(shuō)明,希望本文對(duì)你有所幫助。2010-03-03
VS+opencv實(shí)現(xiàn)鼠標(biāo)移動(dòng)圖片
這篇文章主要為大家詳細(xì)介紹了VS+opencv實(shí)現(xiàn)鼠標(biāo)移動(dòng)圖片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
ASP.NET使用My97DatePicker日期控件實(shí)例
這篇文章主要為大家詳細(xì)介紹了ASP.NET使用My97DatePicker日期控件實(shí)例,如何使用My97DatePicker日期控件,本文為大家介紹,感興趣的小伙伴們可以參考一下2016-04-04
ASP.NET Core中的Action的返回值類型實(shí)現(xiàn)
這篇文章主要介紹了ASP.NET Core中的Action的返回值類型實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
ASP.NET2.0數(shù)據(jù)庫(kù)入門(mén)之SQL Server
ASP.NET2.0數(shù)據(jù)庫(kù)入門(mén)之SQL Server...2006-09-09
WPF數(shù)據(jù)綁定中的RelativeSource屬性
這篇文章介紹了WPF數(shù)據(jù)綁定中的RelativeSource屬性,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
ubuntu16.4下用jexus部署ASP.NET Core環(huán)境
這篇文章主要以圖文結(jié)合的方式介紹了ubuntu16.4下ASP.NET Core部署環(huán)境搭建步驟,感興趣的小伙伴們可以參考一下2016-07-07
創(chuàng)建基于ASP.NET的SMTP郵件服務(wù)的具體方法
Asp.net在System.Web.Mail名稱空間中有一個(gè)發(fā)送email的內(nèi)建類,但這僅是cdosys的一個(gè)假象。開(kāi)發(fā)者能使用一個(gè)替代的它smtp郵件服務(wù)。在這篇文章里面,我將會(huì)展示如何創(chuàng)建一個(gè)用于asp.net的功能齊全的smtp郵件服務(wù)2013-11-11

