Asp.Net Core在多个API之间共享通用服务注册

时间:2019-02-06 09:59:51

标签: configuration microservices asp.net-core-webapi

我正在构建基于微服务架构的应用程序。 目前,我有2个WebApi项目,并且需要一种在它们之间共享公共服务注册的方法。 我的意思是...我必须为我添加到解决方案中的每个WebApi项目在Startup.cs中重新注册所有常用服务。 服务如:

  • 全局错误处理中间件
  • 记录配置
  • 路由设置
  • appSettings.json配置 等

有没有办法集中这些通用的东西,使它们在我的所有WebApi项目中都具有全局性?

1 个答案:

答案 0 :(得分:1)

要使用最少的重复代码添加服务,一种解决方案可能是在每个API项目引用的共享ASP.NET Core项目中使用扩展方法创建一个静态类,

public static IServiceCollection AddCommonServices(this IServiceCollection services, IConfigurationSection myOptions)
{
    services.AddService1()
            .AddLogging()
            .Configure<MyOptions>(myOptions)
            ...
    services.AddMvc();

    return services;
}

然后在每个API项目的Startup.cs中:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCommonServices(Configuration["MyOptions"]);
}

您可以为Configure方法做类似的事情,也可以使用服务。