Мое решение для этого, если оно кому-либо служит:
Аннотация класса с Base
public abstract class BaseStartup
{
#region Constructors
protected BaseStartup(IConfiguration configuration, IWebHostEnvironment environment)
{
Configuration = configuration;
Environment = environment;
}
#endregion
protected IConfiguration Configuration { get; }
protected IWebHostEnvironment Environment { get; }
public virtual void ConfigureServices(IServiceCollection services)
{
services.AddHealthCheck(Configuration);
services.AddExpressiveAnnotations();
services.AddConsul(Configuration, Environment);
services.AddApiClients(Configuration);
services.AddConsulConfiguration(Configuration, Environment);
services.AddHttpContextAccessor();
services.AddControllers();
services.AddLogging(loggingBuilder => loggingBuilder.AddSerilog(dispose: true));
services.AddDbContextBaseContext(Configuration);
services.AddScrutorServiceAndRepository();
}
public virtual void Configure(IApplicationBuilder app)
{
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseSwagger(Environment, Configuration);
app.UseEndpointWithHealthService();
}
}
И запуск микросервиса:
/// <summary>
/// Principal class for configuration app from net core
/// </summary>
public class Startup : BaseStartup
{
/// <summary>
/// Constructor of Startup
/// </summary>
/// <param name="configuration"></param>
/// <param name="environment"></param>
public Startup(IConfiguration configuration, IWebHostEnvironment environment) : base(configuration, environment)
{
}
/// <summary>
/// IoC of .NET Core for inject dependecy injection
/// </summary>
/// <param name="services"></param>
public override void ConfigureServices(IServiceCollection services)
{
base.ConfigureServices(services);
services.AddSwagger(configuration: Configuration,
assemblyName: Assembly.GetExecutingAssembly().GetName().Name,
baseDirectory: AppContext.BaseDirectory);
services.AddAutoMapper(typeof(TsrAutoMapperConfig).GetTypeInfo().Assembly);
}
/// <summary>
/// Principal method load all configuration and runing the app
/// </summary>
/// <param name="app"></param>
public override void Configure(IApplicationBuilder app)
{
app.UseDeveloperExceptionPage(Environment);
app.UseLogActivityMiddleware(nameof(ApiIngestTSR));
app.UseLogExceptionMiddleware(Environment, nameof(ApiIngestTSR));
base.Configure(app);
}
}