[.NetCore 小筆記] 關於 讀取 appsettings.json 的一些事情,讀取 Dictionary

2020-01-09

最近在寫 .Net Core 的東西遇到一些問題,想說就是筆記一下,讓自己記住一些事情,免得在跌坑,所以開啟這個系列 .NetCore 小筆記,這次遇到的問題是,我在專案中的 appsettings.json 長這樣

{ "Logging": { "LogLevel": { "Default": "Warning" } }, "AllowedHosts": "*", "azure_blob_connectionstring": "DefaultEndpointsProtocol=https;AccountName=YOUR_ACCOUNT_NAME;AccountKey=YOUR_ACCOUNT_KEY;EndpointSuffix=core.windows.net", "blobcontainer": "n2imageagent2020", "uploadtoken": "your_token", "errorimage": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Blue_Screen_of_Death.png/800px-Blue_Screen_of_Death.png", "notfound": "https://upload.wikimedia.org/wikipedia/commons/thumb/a/ac/No_image_available.svg/600px-No_image_available.svg.png", "projectsinfo": { "PROJECT_NAME_WITH_UNLIMIT_TIME": 0, "PROJECT_NAME_WITH_LIMIT_10_SECONDS": 10, "SAMPLE1": 4 } }

其實也很簡單,如果你要取得 uploadtoken 你只要

var token = Configuration.GetValue<string>("your_token");

接下來,重點是我要取 projectsinfo 這 element ,看到有支援T ,想當然爾應該是   var projectsinfo = Configuration.GetValue<Dictionary<string,int>>("projectsinfo");

太天真了,真的是太天真了,怎麼取都是 null . 最後感謝同事 (Eleven) 測試後,原來要用 bind,Source 如下

var projectsinfo = new Dictionary<string, int>(); Configuration.GetSection("projectsinfo").Bind(projectsinfo );

筆記一下,畢竟,只是用程式習慣寫下來就是死在莫名的地方,當然也有可能是我功力還不夠,自己筆記一下,也給之後有碰到的朋友。


當麻許的碎念筆記 2014 | Donma Hsu Design.