日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core应用程序的参数配置及使用

發布時間:2023/12/4 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core应用程序的参数配置及使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

應用程序的開發不僅僅是寫代碼這點事情。假設你正在開發一個能夠支持多次部署的微服務,此時你就需要有一個合理的應用程序配置方案,以便在開發和生產環境中能夠方便地選用不同的配置參數,并且能夠在部署到容器服務(比如ACS或者Kubernetes)時,這些參數能夠被動態地、合理地設置。本文通過最簡單的形式,對ASP.NET Core應用程序的不同的配置方式進行介紹,并介紹了在應用程序中如何使用這些配置參數,相信對于ASP.NET Core的開發者會有很大幫助。

提前準備

我們首先使用Visual Studio 2017新建一個ASP.NET Core的應用程序,當然如果沒有Visual Studio 2017的話,下載安裝了.NET Core SDK之后,使用dotnet new命令也能創建ASP.NET Core應用程序,然后使用你平時習慣使用的編輯器進行代碼編輯。我還是建議使用Visual Studio 2017,社區版(Community版)是完全免費的,功能上與專業版和企業版也沒多大區別。免費的宇宙最強IDE,放著不用豈不是浪費么。

言歸正傳,為了能夠方便地看出ASP.NET Core應用程序使用配置數據的方式,我們首先修改Startup.cs文件,加入日志控制臺輸出的代碼。關鍵代碼如下:

12345678910111213141516171819public class Startup{????private readonly ILogger logger;????public Startup(IConfiguration configuration, ILogger<Startup> logger)????{????????Configuration = configuration;????????this.logger = logger;????}????public IConfiguration Configuration { get; }????public void ConfigureServices(IServiceCollection services)????{????????var mongoHost = Configuration["mongo:server:host"];????????logger.LogInformation("MongoDB Server Host: " + mongoHost);????????// .... 其它代碼省略 ....????}}

接下來,我們就可以開始做實驗了。

參數配置方式

ASP.NET Core提供了多樣化的參數配置方式,總結起來,有以下幾種常用的參數配置方式:

  • 通過appsettings.json文件

  • 使用系統環境變量

  • 通過命令行進行參數配置

當然,還可以自定義配置文件或者其它的配置方式。不過這里我只打算介紹常規的用法,因為我相信目前ASP.NET Core默認提供的配置方式應該能夠滿足絕大部分應用場景。如需獲取更多有關其它的參數配置方式的詳細信息,可以參考微軟官方文檔。

appsettings.json

appsettings.json文件是ASP.NET Core應用程序的配置文件,通常與應用程序的DLL文件在同一個目錄下。通過ASPNETCORE_ENVIRONMENT環境變量可以指定具體使用哪個appsettings.json作為配置文件。比如,如果ASPNETCORE_ENVIRONMENT環境變量的值為Production,那么appsettings.Production.json文件就會被使用。這種根據環境變量來決定配置文件的方式,允許通過一個簡單的字符串來決定一系列的參數取值,在實際應用中還是非常方便的。

現在,我們修改appsettings.json文件,將MongoDB的連接信息配置進去:

123456789101112131415{??"Logging": {????"LogLevel": {??????"Default": "Information"????}??},??"AllowedHosts": "*",??"mongo": {????"server": {??????"host": "localhost",??????"port": 27017????},????"database": "db"??}}

然后編譯應用程序,并將appsettings.json文件復制到編譯輸出目錄,之后在命令行通過dotnet命令啟動應用程序:

可以看到,配置數據已經正常輸出。接下來,確認一下ASPNETCORE_ENVIRONMENT指定的是Development,因此,我們修改一下appsettings.Development.json文件,使用同樣的結構配置MongoDB的連接信息,只不過我們使用localhost_dev來指定mongo:server:host的值:

1234567891011121314151617{??"Logging": {????"LogLevel": {??????"Default": "Debug",??????"System": "Information",??????"Microsoft": "Information"????}??},??"mongo": {????"server": {??????"host": "localhost_dev",??????"port": 27017????},????"database": "db"??}}

此時,再次啟動應用程序,發現配置數據已經更新:

因此,可以使用appsettings.json文件,根據不同的運行環境來選擇使用不同的配置參數。

環境變量

appsettings.json文件中已經配置好的參數,可以被環境變量覆蓋。我們可以通過set命令,在Windows的命令行中設置一個環境變量:

再次運行應用程序,得到的結果就是環境變量里所設置的參數值:

可以看出,之前由appsettings.json文件指定的參數,已經被環境變量所覆蓋。這一特性十分重要,當我們把一個ASP.NET Core應用程序包裝成一個docker鏡像,并在docker容器中運行時,我們可以方便地使用docker run -e的參數,將環境變量注入進去,并覆蓋原來寫死在配置文件中的值,這也充分證明了ASP.NET Core對于容器的支持是十分友好的。

命令行參數

在使用dotnet啟動應用程序時,可以直接在命令行提供運行時參數,此時命令行參數會覆蓋環境變量中的設置,比如:

同樣,如果ASP.NET Core應用程序被包裝成一個docker鏡像,那么我們就可以通過docker exec命令對應用程序進行調試,并直接通過命令行注入調試時所需的參數。

在控制器中使用配置參數

要在控制器中使用配置參數,最常用的有兩種方法,第一種是在控制器的構造函數中注入IConfiguration對象,另一種則是自定義一個配置數據模型,然后在控制器的構造函數中注入IOptions對象。

注入IConfiguration對象

以下代碼演示了通過構造器注入IConfiguration對象的方式來獲取配置信息:

123456789101112131415161718[Route("api/[controller]")][ApiController]public class ValuesController : ControllerBase{????private readonly IConfiguration configuration;????public ValuesController(IConfiguration configuration)????{????????this.configuration = configuration;????}????// GET api/values????[HttpGet]????public ActionResult<IEnumerable<string>> Get()????{????????return new string[] { this.configuration["mongo:server:host"] };????}}

執行結果如下:

注入IOptions對象

這種方法首先需要根據配置數據的結構,自定義一個用于保存配置數據的類:

12345678910111213public class Server{????public string Host { get; set; }????public int Port { get; set; }}public class Mongo{????public Server Server { get; set; }????public string Database { get; set; }}

然后,修改Startup.ConfigureServices方法,將配置注入進來:

123456public void ConfigureServices(IServiceCollection services){????// ...????services.Configure<Mongo>(Configuration.GetSection("mongo"));????// ...}

最后,在控制器的構造函數中注入IOptions對象:

123456789101112131415161718[Route("api/[controller]")][ApiController]public class ValuesController : ControllerBase{????private readonly IOptions<Mongo> configuration;????public ValuesController(IOptions<Mongo> configuration)????{????????this.configuration = configuration;????}????// GET api/values????[HttpGet]????public ActionResult<IEnumerable<string>> Get()????{????????return new string[] { this.configuration.Value.Server.Host };????}}

執行結果也是一樣的:

總結

本文快速介紹了ASP.NET Core應用程序的基本配置和使用方式,相信對于ASP.NET Core的開發人員會有一定的幫助。ASP.NET Core應用程序的配置還是非常靈活方便的,如果有興趣深入了解的話,強烈建議閱讀微軟官方文檔,也可以閱讀ASP.NET Core的源代碼進行深入了解。

相關文章:

  • .NET Core開發日志——配置

  • .NET Core微服務之基于Apollo實現統一配置中心

原文地址:?http://sunnycoding.cn/2018/08/25/aspnetcore-configuration/


.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結

以上是生活随笔為你收集整理的ASP.NET Core应用程序的参数配置及使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。