翰墨写人生 發表於 2018-10-8 16:09:00

.net core appsetting/获取配置文件

<h1>修改appsetting</h1>
<p>最近用Identity4所以需要做一个配置项项目</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">{
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Logging</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
    </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">IncludeScopes</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(0, 0, 255, 1)">false</span><span style="color: rgba(0, 0, 0, 1)">,
    </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">LogLevel</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {
      </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Default</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Warning</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
    }
},
</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Indentity</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">: {</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Center</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,<span style="color: rgba(255, 0, 0, 1)">//这部分就是要取的
    </span></span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">ApiCenter</span><span style="color: rgba(128, 0, 0, 1)">"</span>: <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
}
}</span></pre>
</div>
<p>&nbsp;</p>
<h1>在startup中获取</h1>
<p>首先我们要从&nbsp;Indentity中&nbsp;获取center当中的数据</p>
<p>这部分比较简单只要在startup&nbsp;中的ConfigureServices&nbsp;获取&nbsp;Indentity下的Center</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">this</span>.Configuration[<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Indentity:Center</span><span style="color: rgba(128, 0, 0, 1)">"</span>]</pre>
</div>
<p>就这么一句话就可以获取到了</p>
<h1>将内容注入到管道中</h1>
<p>1.创建一个model</p>
<div class="cnblogs_code">
<pre>    <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> IndentitySettingModel
    {
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> Center { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> ApiCenter { <span style="color: rgba(0, 0, 255, 1)">get</span>; <span style="color: rgba(0, 0, 255, 1)">set</span><span style="color: rgba(0, 0, 0, 1)">; }
    }</span></pre>
</div>
<p>2.在startup中注入到管道当中</p>
<p>&nbsp;</p>
<div class="cnblogs_code">
<pre>services.Configure&lt;Utility.HelperModel.IndentitySettingModel&gt;(<span style="color: rgba(0, 0, 255, 1)">this</span>.Configuration.GetSection(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">Indentity</span><span style="color: rgba(128, 0, 0, 1)">"</span>));</pre>
</div>
<p>兄弟。这样就注入到管道当中了。接下来我们就可以去controller中获取&nbsp;了</p>
<h1>在controller中获取</h1>
<div class="cnblogs_code">
<pre>      <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;summary&gt;</span>
      <span style="color: rgba(128, 128, 128, 1)">///</span><span style="color: rgba(0, 128, 0, 1)"> 获取AccessToken
      </span><span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;/summary&gt;</span>
      <span style="color: rgba(128, 128, 128, 1)">///</span> <span style="color: rgba(128, 128, 128, 1)">&lt;returns&gt;&lt;/returns&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">string</span> GetAccessToken(IOptions&lt;IndentitySettingModel&gt;<span style="color: rgba(0, 0, 0, 1)"> settings)
      {
         return settings.Center;</span><span style="color: rgba(0, 0, 0, 1)">
      }</span></pre>
</div>
<p>恩很&nbsp;就是这样&nbsp;就可以获取的到了。</p>
<p>&nbsp;</p>
<h1>最详细的config引用</h1>
<p>刚才有几个朋友和我说 。我干的很漂亮纯属糊弄人的文章。</p>
<p>好的。&nbsp;我重新写一下吧。</p>
<p>我把所有需要引用DLL&nbsp;给大家贴图吧。太多了。</p>
<p><img src="https://img2018.cnblogs.com/blog/292991/201810/292991-20181012101054613-1829929321.png" alt=""></p>
<p>算了,还是打出来吧。</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Abstractions
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.DependencyInjection
Microsoft.Extensions.Options
Microsoft.Extensions.Options.ConfigurationExtensions</span></pre>
</div>
<p>把这些&nbsp;nuget引用</p>
<h1>编写Help类</h1>
<div class="cnblogs_code">
<pre>    <span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> ConfigurationUtil
    {

      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">readonly</span><span style="color: rgba(0, 0, 0, 1)"> IConfiguration Configuration;

      </span><span style="color: rgba(0, 0, 255, 1)">static</span><span style="color: rgba(0, 0, 0, 1)"> ConfigurationUtil()
      {
            Configuration </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile(</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">appsettings.json</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">)
                .Build();
      }

      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> T GetSection&lt;T&gt;(<span style="color: rgba(0, 0, 255, 1)">string</span> key) <span style="color: rgba(0, 0, 255, 1)">where</span> T : <span style="color: rgba(0, 0, 255, 1)">class</span>, <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)">()
      {
            </span><span style="color: rgba(0, 0, 255, 1)">var</span> obj = <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> ServiceCollection()
                .AddOptions()
                .Configure</span>&lt;T&gt;<span style="color: rgba(0, 0, 0, 1)">(Configuration.GetSection(key))
                .BuildServiceProvider()
                .GetService</span>&lt;IOptions&lt;T&gt;&gt;<span style="color: rgba(0, 0, 0, 1)">()
                .Value;
            </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> obj;
      }

      </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> <span style="color: rgba(0, 0, 255, 1)">string</span> GetSection(<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)"> key)
      {
            </span><span style="color: rgba(0, 0, 255, 1)">return</span> Configuration.GetValue&lt;<span style="color: rgba(0, 0, 255, 1)">string</span>&gt;<span style="color: rgba(0, 0, 0, 1)">(key);
      }
    }</span></pre>
</div>
<p>调用方法</p>
<div class="cnblogs_code">
<pre>ConfigurationUtil.GetSection(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">MongoDb:ConnectionString</span><span style="color: rgba(128, 0, 0, 1)">"</span>)</pre>
</div>
<p>&nbsp;</p>
<h1>骂人部分</h1>
<p>天天让我写。天天没人点赞!</p>
<h1>后续</h1>
<p>创建了一个QQ群希望有志之士可以加一下</p>
<p>点击链接加入群聊【.Net&nbsp;Core研究团】:https://jq.qq.com/?_wv=1027&amp;k=5298dNv</p>
<p><img src="https://images2018.cnblogs.com/blog/292991/201808/292991-20180817140344707-1856738014.png" alt=""></p><br><br>
来源:https://www.cnblogs.com/Extnet/p/9755006.html
頁: [1]
查看完整版本: .net core appsetting/获取配置文件