using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; using WireMock.Settings; namespace WireMock.Net.WebApplication { public class Program { public static void Main(string[] args) { // Create service collection var serviceCollection = new ServiceCollection(); ConfigureServices(serviceCollection); // Create service provider var serviceProvider = serviceCollection.BuildServiceProvider(); // Run app serviceProvider.GetService().Run(); } private static void ConfigureServices(IServiceCollection services) { // Build configuration var configuration = new ConfigurationBuilder() .SetBasePath(AppContext.BaseDirectory) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddEnvironmentVariables() // <-- this is needed to to override settings via the Azure Portal App Settings .Build(); // Add LoggerFactory and Logger var factory = new LoggerFactory(); services.AddSingleton(factory .AddConsole(configuration.GetSection("Logging")) .AddDebug() .AddAzureWebAppDiagnostics() ); services.AddSingleton(factory.CreateLogger("WireMock.Net Logger")); // Add ApplicationInsights services.AddApplicationInsightsTelemetry(); // Add access to generic IConfigurationRoot services.AddSingleton(configuration); // Add access to IFluentMockServerSettings var settings = configuration.GetSection("FluentMockServerSettings").Get(); services.AddSingleton(settings); // Add services services.AddTransient(); // Add app services.AddTransient(); } } }