C# 使用ASP.NETCore2.0从主服务器访问服务
我正在尝试访问我的C# 使用ASP.NETCore2.0从主服务器访问服务,c#,asp.net-core,C#,Asp.net Core,我正在尝试访问我的DbInitializer中的服务。我得到的ApplicationDbContext没有任何问题,但是我得到了RegisterService的以下错误: 尚未找到类型为“Shared.Services.RegisterService”的服务 注册的 代码如下: public void ConfigureServices(IServiceCollection services) { ... services.AddEntityFrameworkSqlServer(
DbInitializer
中的服务。我得到的ApplicationDbContext
没有任何问题,但是我得到了RegisterService
的以下错误:
尚未找到类型为“Shared.Services.RegisterService”的服务
注册的
代码如下:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddEntityFrameworkSqlServer().AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"], sqlOptions => { })
);
services.AddTransient<IRegisterService, RegisterService>();
services.AddTransient<IEmailService, EmailService>();
services.AddMvc();
}
public class Program
{
public static void Main(string[] args)
{
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
MainAsync(services).GetAwaiter().GetResult();
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred while migrating the database.");
}
}
host.Run();
}
public static async Task MainAsync(IServiceProvider services)
{
await DbInitializer.Initialize(services);
}
}
public class DbInitializer
{
public static async Task Initialize(IServiceProvider services)
{
var context = services.GetRequiredService<ApplicationDbContext>();
var registerService = services.GetRequiredService<RegisterService>();
context.Database.EnsureCreated();
}
}
public void配置服务(IServiceCollection服务)
{
...
services.AddEntityFrameworkSqlServer().AddDbContext(选项=>
options.UseSqlServer(配置[“数据:默认连接:ConnectionString]”,sqlOptions=>{})
);
services.AddTransient();
services.AddTransient();
services.AddMvc();
}
公共课程
{
公共静态void Main(字符串[]args)
{
var host=BuildWebHost(args);
使用(var scope=host.Services.CreateScope())
{
var services=scope.ServiceProvider;
尝试
{
mainsync(services.GetAwaiter().GetResult();
}
捕获(例外情况除外)
{
var logger=services.GetRequiredService();
LogError(例如,“迁移数据库时出错”);
}
}
host.Run();
}
公共静态异步任务MainAsync(IServiceProvider服务)
{
等待DbInitializer.Initialize(服务);
}
}
公共类初始值设定项
{
公共静态异步任务初始化(IServiceProvider服务)
{
var context=services.GetRequiredService();
var registerService=services.GetRequiredService();
context.Database.recreated();
}
}
您实际上还没有注册RegisterService
,您已经注册了IRegisterService
。您具体要求的是RegisterService
的一个实例,该实例无法解决。您需要:
services.AddTransient<RegisterService>();
您的注册服务是否实现接口IRegisterService?是。。。公共类注册服务:IRegisterService
var registerService = services.GetRequiredService<IRegisterService>();