diff --git a/examples/WireMock.Net.WebApplication.NETCore2/web.config b/examples/WireMock.Net.WebApplication.NETCore2/web.config index 1f48560c..d2f21cf2 100644 --- a/examples/WireMock.Net.WebApplication.NETCore2/web.config +++ b/examples/WireMock.Net.WebApplication.NETCore2/web.config @@ -5,7 +5,7 @@ --> - + diff --git a/examples/WireMock.Net.WebApplication.NETCore3/App.cs b/examples/WireMock.Net.WebApplication.NETCore3/App.cs index 2575335b..a9349b59 100644 --- a/examples/WireMock.Net.WebApplication.NETCore3/App.cs +++ b/examples/WireMock.Net.WebApplication.NETCore3/App.cs @@ -1,22 +1,28 @@ -using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Hosting; +using System.Threading; +using System.Threading.Tasks; namespace WireMock.Net.WebApplication { - public class App + public class App : IHostedService { private readonly IWireMockService _service; - private readonly ILogger _logger; - public App(IWireMockService service, ILogger logger) + public App(IWireMockService service) { _service = service; - _logger = logger; } - public void Run() + public Task StartAsync(CancellationToken cancellationToken) { - _logger.LogInformation("WireMock.Net App running"); - _service.Run(); + _service.Start(); + return Task.CompletedTask; + } + + public Task StopAsync(CancellationToken cancellationToken) + { + _service.Stop(); + return Task.CompletedTask; } } } \ No newline at end of file diff --git a/examples/WireMock.Net.WebApplication.NETCore3/IWireMockService.cs b/examples/WireMock.Net.WebApplication.NETCore3/IWireMockService.cs index de3ac175..5c3f3547 100644 --- a/examples/WireMock.Net.WebApplication.NETCore3/IWireMockService.cs +++ b/examples/WireMock.Net.WebApplication.NETCore3/IWireMockService.cs @@ -2,6 +2,8 @@ { public interface IWireMockService { - void Run(); + void Start(); + + void Stop(); } } \ No newline at end of file diff --git a/examples/WireMock.Net.WebApplication.NETCore3/Program.cs b/examples/WireMock.Net.WebApplication.NETCore3/Program.cs index 336c7e9d..8243834f 100644 --- a/examples/WireMock.Net.WebApplication.NETCore3/Program.cs +++ b/examples/WireMock.Net.WebApplication.NETCore3/Program.cs @@ -1,59 +1,30 @@ -using System; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Logging; -using WireMock.Settings; -// using Microsoft.Extensions.Logging.Console; - -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 serviceCollection) - { - // 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 - var factory = new LoggerFactory(); - //var consoleLog = new ConsoleLoggerProvider(configuration.GetSection("Logging")); - serviceCollection.AddSingleton(factory - // .AddProvider(configuration.GetSection("Logging")) -// .AddDebug() - // .AddAzureWebAppDiagnostics() - ); - - serviceCollection.AddSingleton(factory.CreateLogger("WireMock.Net Logger")); - - // Add access to generic IConfigurationRoot - serviceCollection.AddSingleton(configuration); - - // Add access to WireMockServerSettings - var settings = configuration.GetSection("WireMockServerSettings").Get(); - serviceCollection.AddSingleton(settings); - - // Add services - serviceCollection.AddTransient(); - - // Add app - serviceCollection.AddTransient(); - } - } +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; +using WireMock.Settings; + +namespace WireMock.Net.WebApplication +{ + public class Program + { + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + } + + private static IHostBuilder CreateHostBuilder(string[] args) + => Host.CreateDefaultBuilder(args) + .ConfigureServices((host, services) => ConfigureServices(services, host.Configuration)); + + private static void ConfigureServices(IServiceCollection services, IConfiguration configuration) + { + services.AddLogging(logging => logging.AddConsole().AddDebug()); + + services.AddTransient(); + services.Configure(configuration.GetSection("WireMockServerSettings")); + + services.AddHostedService(); + } + } } \ No newline at end of file diff --git a/examples/WireMock.Net.WebApplication.NETCore3/Properties/launchSettings.json b/examples/WireMock.Net.WebApplication.NETCore3/Properties/launchSettings.json index 31f0369b..aa1da866 100644 --- a/examples/WireMock.Net.WebApplication.NETCore3/Properties/launchSettings.json +++ b/examples/WireMock.Net.WebApplication.NETCore3/Properties/launchSettings.json @@ -8,7 +8,7 @@ }, "iisExpress": { "applicationUrl": "http://localhost:56513/", - "sslPort": 0 + "sslPort": 44304 } }, "profiles": { diff --git a/examples/WireMock.Net.WebApplication.NETCore3/WireMock.Net.WebApplication.NETCore3.csproj b/examples/WireMock.Net.WebApplication.NETCore3/WireMock.Net.WebApplication.NETCore3.csproj index fb52a5a5..c7d50ef6 100644 --- a/examples/WireMock.Net.WebApplication.NETCore3/WireMock.Net.WebApplication.NETCore3.csproj +++ b/examples/WireMock.Net.WebApplication.NETCore3/WireMock.Net.WebApplication.NETCore3.csproj @@ -7,6 +7,7 @@ WireMock.Net.WebApplication WireMock.Net.WebApplication efcf4a18-fd7c-4622-1111-336d65290599 + OutOfProcess diff --git a/examples/WireMock.Net.WebApplication.NETCore3/WireMockService.cs b/examples/WireMock.Net.WebApplication.NETCore3/WireMockService.cs index 4aa28e14..1f02e615 100644 --- a/examples/WireMock.Net.WebApplication.NETCore3/WireMockService.cs +++ b/examples/WireMock.Net.WebApplication.NETCore3/WireMockService.cs @@ -1,83 +1,82 @@ -using System; -using System.Threading; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using WireMock.Admin.Requests; -using WireMock.Logging; -using WireMock.Server; -using WireMock.Settings; - -namespace WireMock.Net.WebApplication -{ - public class WireMockService : IWireMockService - { - private static int sleepTime = 30000; - - private readonly ILogger _logger; - private readonly WireMockServerSettings _settings; - - private class Logger : IWireMockLogger - { - private readonly ILogger _logger; - - public Logger(ILogger logger) - { - _logger = logger; - } - - public void Debug(string formatString, params object[] args) - { - _logger.LogDebug(formatString, args); - } - - public void Info(string formatString, params object[] args) - { - _logger.LogInformation(formatString, args); - } - - public void Warn(string formatString, params object[] args) - { - _logger.LogWarning(formatString, args); - } - - public void Error(string formatString, params object[] args) - { - _logger.LogError(formatString, args); - } - - public void DebugRequestResponse(LogEntryModel logEntryModel, bool isAdminrequest) - { - string message = JsonConvert.SerializeObject(logEntryModel, Formatting.Indented); - _logger.LogDebug("Admin[{0}] {1}", isAdminrequest, message); - } - - public void Error(string formatString, Exception exception) - { - _logger.LogError(formatString, exception.Message); - } - } - - public WireMockService(ILogger logger, WireMockServerSettings settings) - { - _logger = logger; - _settings = settings; - - _settings.Logger = new Logger(logger); - } - - public void Run() - { - _logger.LogInformation("WireMock.Net server starting"); - - WireMockServer.Start(_settings); - - _logger.LogInformation($"WireMock.Net server settings {JsonConvert.SerializeObject(_settings)}"); - - while (true) - { - _logger.LogInformation("WireMock.Net server running"); - Thread.Sleep(sleepTime); - } - } - } +using System; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; +using Newtonsoft.Json; +using WireMock.Admin.Requests; +using WireMock.Logging; +using WireMock.Server; +using WireMock.Settings; + +namespace WireMock.Net.WebApplication +{ + public class WireMockService : IWireMockService + { + private WireMockServer _server; + private readonly ILogger _logger; + private readonly WireMockServerSettings _settings; + + private class Logger : IWireMockLogger + { + private readonly ILogger _logger; + + public Logger(ILogger logger) + { + _logger = logger; + } + + public void Debug(string formatString, params object[] args) + { + _logger.LogDebug(formatString, args); + } + + public void Info(string formatString, params object[] args) + { + _logger.LogInformation(formatString, args); + } + + public void Warn(string formatString, params object[] args) + { + _logger.LogWarning(formatString, args); + } + + public void Error(string formatString, params object[] args) + { + _logger.LogError(formatString, args); + } + + public void DebugRequestResponse(LogEntryModel logEntryModel, bool isAdminrequest) + { + string message = JsonConvert.SerializeObject(logEntryModel, Formatting.Indented); + _logger.LogDebug("Admin[{0}] {1}", isAdminrequest, message); + } + + public void Error(string formatString, Exception exception) + { + _logger.LogError(formatString, exception.Message); + } + } + + public WireMockService(ILogger logger, IOptions settings) + { + _logger = logger; + _settings = settings.Value; + + _settings.Logger = new Logger(logger); + } + + public void Start() + { + _logger.LogInformation("WireMock.Net server starting"); + + _server = WireMockServer.Start(_settings); + + _logger.LogInformation($"WireMock.Net server settings {JsonConvert.SerializeObject(_settings)}"); + } + + public void Stop() + { + _logger.LogInformation("WireMock.Net server stopping"); + _server?.Stop(); + } + } } \ No newline at end of file diff --git a/examples/WireMock.Net.WebApplication.NETCore3/web.config b/examples/WireMock.Net.WebApplication.NETCore3/web.config index ed25ab6d..d2f21cf2 100644 --- a/examples/WireMock.Net.WebApplication.NETCore3/web.config +++ b/examples/WireMock.Net.WebApplication.NETCore3/web.config @@ -7,6 +7,6 @@ - + \ No newline at end of file