干了一天的活,還有點時間,給兄弟們寫點東西吧。
大家有沒有發現一個問題?那就是在.Net Core的MVC項目里面,沒有.config文件了!!!同志們,沒有config文件了啊,這樣搞,我以后要做些靈活的配置,又不想動源代碼,或者說我們的程序已經打包了,怎么辦啊?!
呵呵呵,.Net Core給我們提供了一個叫appsettings.json的文件給我們這些受虐的群眾,用於取代config文件,為什么要這么做我不懂,也不想懂。我只要知道怎么去用它就行了。
但是,怎么去用呢?因為我試了一下,淡的淡的淡的,ConfigurationManager.AppSettings和ConfigurationManager.ConnectionStrings這兩個東西都不能用了。剛開始糾結了一段時間,后來查了半天資料也沒有什么頭緒就放棄了,想着回頭抽空寫個程序直接讀文件去,我就不信我讀不出你來了!!!后來因為巧合,發現了一個方法可以很方便的讀取配置文件的內容,吼吼。
廢話我就不說了,直接說怎么搞吧!
首先,我們在項目下隨便找個地方新建一個類庫文件,我給放在MyCMS.Web項目中的Models文件夾下了,取名叫MyConfig.cs。然后,我們在這個文件中新建一個名叫MyConfig的類,給它一些屬性。效果如下:
然后,我們在appsettings.json中,也給加上一些相應的配置(屬性字段必須和咱們前面定義的類屬性保持一致),父名稱也叫MyConfig,並給它的屬性賦上一些值,如下:
好了,准備工作完成,接下來,我們打開Startup.cs文件,添加MyCMS.Web.Models的引用,然后在ConfigureServices方法中加入一段代碼:
在控制終端里面輸入命令dotnet build MyCMS.Web,先編譯一下看看是不是成功——還好,一切正常。
看到了吧?我們看起來好像是閉着眼睛干了一些我們也不知道結果是啥的事,因為service.Configure這個東西,從英文介紹上看,好像是說把配置信息注冊進寄存器中了。然后,我們怎么去讀它出來呢?在哪讀它呢?哈哈,在哪讀?當然是在控制器里面了……因為業務操作的入口其實就是控制器,從控制器這里得到了東西后,接下來的事就可以任由你發揮了啊。
我們打開HomeController這個控制器,聲明一個MyConfig的對象並增加一個帶IOptions參數的構造函數,並在構造函數中對前面生成的MyConfig對象賦值,效果如下:
接下來你就可以拿着這個myConfig對象去任意去瀟灑了——這里面實際上是有一個反序列化的過程,將JSON轉換成了對象,並給對象的屬性賦值了。也不管了,先用着吧,回頭用得多了,你和我也就知道為什么要這么用了。能用就好,不是嗎?
接下來我們來看看運行效果,先打上個斷點,然后用勁你渾身的力氣使勁摁下F5,啟動調試。下圖,效果:
(PS:有的同學可能在VS Code里面跑不起來,會報那個 未能找到類型或命名空間名“IOptions<>”(是否缺少 using 指令或程序集引用?) 的錯誤,這個時候……哈哈,看到上邊我加的那個沒?


好了,不管三七二十一,摁下F5,好啦!!!一切正常!!!