public Task StartAsync() { var builder = new WebHostBuilder(); // Workaround for https://github.com/WireMock-Net/WireMock.Net/issues/292 // On some platforms, AppContext.BaseDirectory is null, which causes WebHostBuilder to fail if ContentRoot is not // specified (even though we don't actually use that base path mechanism, since we have our own way of configuring // a filesystem handler). if (string.IsNullOrEmpty(AppContext.BaseDirectory)) { builder.UseContentRoot(System.IO.Directory.GetCurrentDirectory()); } _host = builder .UseSetting("suppressStatusMessages", "True") // https://andrewlock.net/suppressing-the-startup-and-shutdown-messages-in-asp-net-core/ .ConfigureAppConfigurationUsingEnvironmentVariables() .ConfigureServices(services => { services.AddSingleton(_wireMockMiddlewareOptions); services.AddSingleton <IMappingMatcher, MappingMatcher>(); services.AddSingleton <IOwinRequestMapper, OwinRequestMapper>(); services.AddSingleton <IOwinResponseMapper, OwinResponseMapper>(); _wireMockMiddlewareOptions.AdditionalServiceRegistration?.Invoke(services); }) .Configure(appBuilder => { appBuilder.UseMiddleware <GlobalExceptionMiddleware>(); _wireMockMiddlewareOptions.PreWireMockMiddlewareInit?.Invoke(appBuilder); appBuilder.UseMiddleware <WireMockMiddleware>(); _wireMockMiddlewareOptions.PostWireMockMiddlewareInit?.Invoke(appBuilder); }) .UseKestrel(options => { SetKestrelOptionsLimits(options); SetHttpsAndUrls(options, _wireMockMiddlewareOptions, _urlOptions.GetDetails()); }) .ConfigureKestrelServerOptions() #if NETSTANDARD1_3 .UseUrls(_urlOptions.GetDetails().Select(u => u.Url).ToArray()) #endif .Build(); return(RunHost(_cts.Token)); }
public OwinSelfHost([NotNull] IWireMockMiddlewareOptions options, [NotNull] HostUrlOptions urlOptions) { Check.NotNull(options, nameof(options)); Check.NotNull(urlOptions, nameof(urlOptions)); _options = options; _logger = options.Logger ?? new WireMockConsoleLogger(); foreach (var detail in urlOptions.GetDetails()) { Urls.Add(detail.Url); Ports.Add(detail.Port); } }
public Task StartAsync() { var builder = new WebHostBuilder(); // Workaround for https://github.com/WireMock-Net/WireMock.Net/issues/292 // On some platforms, AppContext.BaseDirectory is null, which causes WebHostBuilder to fail if ContentRoot is not // specified (even though we don't actually use that base path mechanism, since we have our own way of configuring // a filesystem handler). if (string.IsNullOrEmpty(AppContext.BaseDirectory)) { builder.UseContentRoot(System.IO.Directory.GetCurrentDirectory()); } _host = builder .ConfigureServices(services => { services.AddSingleton(_options); services.AddSingleton <IMappingMatcher, MappingMatcher>(); services.AddSingleton <IOwinRequestMapper, OwinRequestMapper>(); services.AddSingleton <IOwinResponseMapper, OwinResponseMapper>(); }) .Configure(appBuilder => { appBuilder.UseMiddleware <GlobalExceptionMiddleware>(); _options.PreWireMockMiddlewareInit?.Invoke(appBuilder); appBuilder.UseMiddleware <WireMockMiddleware>(); _options.PostWireMockMiddlewareInit?.Invoke(appBuilder); }) .UseKestrel(options => { var urlDetails = _urlOptions.GetDetails(); #if NETSTANDARD1_3 var urls = urlDetails.Select(u => u.Url); if (urls.Any(u => u.StartsWith("https://", StringComparison.OrdinalIgnoreCase))) { options.UseHttps(PublicCertificateHelper.GetX509Certificate2()); } #else foreach (var detail in urlDetails) { if (detail.Url.StartsWith("https://", StringComparison.OrdinalIgnoreCase)) { options.Listen(System.Net.IPAddress.Any, detail.Port, listenOptions => { listenOptions.UseHttps(); // PublicCertificateHelper.GetX509Certificate2() }); } else { options.Listen(System.Net.IPAddress.Any, detail.Port); } } #endif }) #if NETSTANDARD1_3 .UseUrls(_urlOptions.GetDetails().Select(u => u.Url).ToArray()) #endif .Build(); return(RunHost(_cts.Token)); }