.NET Core 依赖注入模块

在 MD5 Encryption in .NET/.NET Core 中写了一个MD5加密模块,在使用中访问加载了此模块的页面会立即报错“InvalidOperationException: Unable to resolve service for type”。

原因是我在Controller代码中使用了依赖注入的写法,但是Startup.cs中没有注入该模块。

参考

步骤

  1. 我的Controller代码:
    public class LoginController : Controller
    {
            //加密模块
            private readonly Encryption encryption;
            private readonly FamilySysDbContext db;
    
            public LoginController(FamilySysDbContext _db, Encryption _encryption)
            {
                db = _db;
                encryption = _encryption;
            }
                ... ...
    }
  2. 需要在Startup.cs中依赖注入该模块:
    public void ConfigureServices(IServiceCollection services) {
                    ... ...
        //加密模块
        services.AddScoped<Encryption>();
    
        ... ...
    
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    }

有三种方法实现依赖注入,分别为AddTransient()AddSingleton()AddScoped()。关于它们的区别可见 asp.net core2.0 依赖注入 AddTransient与AddScoped的区别

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据