示例#1
0
        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));
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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));
        }