Jas*_*Cav 8 c# asp.net entity-framework dependency-injection asp.net-core
我正在为我的ASP.NET 5 MVC应用程序创建授权规则/策略.创建它很简单,很容易做到,它正在工作(我的基本测试).但是,我现在需要将我的数据上下文纳入需求.
我在IAuthorizationRequirement实现中创建了一个构造函数,它接受一个MyContext实现的对象DbContext.
我正在我的Startup.cs文件中注册IAuthorizationRequirement .
services.Configure<AuthorizationOptions>(options =>
{
options.AddPolicy("AllowProfileManagement", policy => policy.Requirements.Add(
new AllowProfileManagementRequirement(new MyRepository(new MyContext()))));
});
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我的规则运行时,MyContext不知道所使用的连接字符串(更远Startup.cs):
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<MemorialContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
Run Code Online (Sandbox Code Playgroud)
我正在使用DI这些类型(并且它正在工作).
services.AddTransient<MyRepository>(
provider => new MyRepository(provider.GetRequiredService<MyContext>()));
Run Code Online (Sandbox Code Playgroud)
我知道我在做什么是不对的,但我不知道如何做到这一点,以便DI在所有方面得到充分利用.
这是它始终有效的方式.发布问题,答案很快就会出现.对于那些可能遇到我问题的人来说,这是怎么回事.
services.Configure<AuthorizationOptions>(options =>
{
options.AddPolicy("AllowProfileManagement", policy => policy.Requirements.Add(
services.BuildServiceProvider().GetRequiredService< AllowProfileManagementRequirement>()));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |