.Net Core下使用IConfiguration和IOptions實現自動注入


1. 使用IConfiguration自動注入

執行到Startup的時候,IConfiguration已經被注入到services了,不需要我們額外添加注入的代碼,缺省就是讀取appsettings.json文件,你可以理解在Startup.cs里有隱藏的注入代碼類似如下:

var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables(); Configuration = builder.Build(); services.AddSingleton<IConfiguration>(Configuration);

在Controller里直接在構造函數里傳入IConfiguration,看一下效果:

 

 

我們可以看到能把appsettings.json中的配置文件都加載出來。

2.使用IOptions自動注入

2.1 先定義一個JwtSetting類:

public class JwtSetting
    {
        /// <summary>
        /// 頒發者
        /// </summary>
        public string Issuer { get; set; }

        /// <summary>
        /// 接收者
        /// </summary>
        public string Audience { get; set; }

        /// <summary>
        /// 令牌密碼
        /// </summary>
        public string SecurityKey { get; set; }

        /// <summary>
        ///  過期時間
        /// </summary>
        public long ExpireSeconds { get; set; }

        /// <summary>
        /// 簽名
        /// </summary>
        public SigningCredentials Credentials
        {
            get
            {
                var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SecurityKey));
                return new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            }
        }
    }

2.2 在Startup=》ConfigureServices方法中進行注入

services.Configure<JwtSetting>(Configuration.GetSection("JwtSetting"));

2.3 在Service構造函數中傳入 IOptions<JwtSetting> option 

private readonly JwtSetting _jwtSetting;
        public TokenService(IOptions<JwtSetting> option)
        {
            _jwtSetting = option.Value;
        }

看效果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM