Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ASP.NETCore2.0从主服务器访问服务_C#_Asp.net Core - Fatal编程技术网

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>();