예제 #1
0
        public Task StartAsync()
        {
            _host = new WebHostBuilder()
                    .Configure(appBuilder =>
            {
                appBuilder.UseMiddleware <GlobalExceptionMiddleware>(_options);

                _options.PreWireMockMiddlewareInit?.Invoke(appBuilder);

                appBuilder.UseMiddleware <WireMockMiddleware>(_options);

                _options.PostWireMockMiddlewareInit?.Invoke(appBuilder);
            })
                    .UseKestrel(options =>
            {
#if NETSTANDARD1_3
                if (_urls.Any(u => u.StartsWith("https://", StringComparison.OrdinalIgnoreCase)))
                {
                    options.UseHttps(PublicCertificateHelper.GetX509Certificate2());
                }
#else
                // https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
                foreach (string url in _urls.Where(u => u.StartsWith("http://", StringComparison.OrdinalIgnoreCase)))
                {
                    PortUtil.TryExtractProtocolAndPort(url, out string host, out int port);
                    options.Listen(System.Net.IPAddress.Loopback, port);
                }

                foreach (string url in _urls.Where(u => u.StartsWith("https://", StringComparison.OrdinalIgnoreCase)))
                {
                    PortUtil.TryExtractProtocolAndPort(url, out string host, out int port);
                    options.Listen(System.Net.IPAddress.Loopback, port, listenOptions =>
                    {
                        listenOptions.UseHttps(PublicCertificateHelper.GetX509Certificate2());
                    });
                }
#endif
            })
#if NETSTANDARD1_3
                    .UseUrls(_urls)
#endif
                    .Build();

            IsStarted = true;

#if NETSTANDARD1_3
            Console.WriteLine("WireMock.Net server using netstandard1.3");
            return(Task.Run(() =>
            {
                _host.Run(_cts.Token);
            }, _cts.Token));
#else
            System.Console.WriteLine("WireMock.Net server using netstandard2.0");

            return(Task.Run(() =>
            {
                _host.Run();
            }, _cts.Token));
#endif
        }
예제 #2
0
        public Task StartAsync()
        {
            _host = new WebHostBuilder()
                    .ConfigureServices(services =>
            {
                services.AddSingleton(_options.FileSystemHandler);
                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 =>
            {
#if NETSTANDARD1_3
                if (_urls.Any(u => u.StartsWith("https://", StringComparison.OrdinalIgnoreCase)))
                {
                    options.UseHttps(PublicCertificateHelper.GetX509Certificate2());
                }
#else
                // https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
                foreach (string url in _urls.Where(u => u.StartsWith("http://", StringComparison.OrdinalIgnoreCase)))
                {
                    PortUtils.TryExtract(url, out string protocol, out string host, out int port);
                    options.Listen(System.Net.IPAddress.Any, port);
                }

                foreach (string url in _urls.Where(u => u.StartsWith("https://", StringComparison.OrdinalIgnoreCase)))
                {
                    PortUtils.TryExtract(url, out string protocol, out string host, out int port);
                    options.Listen(System.Net.IPAddress.Any, port, listenOptions =>
                    {
                        listenOptions.UseHttps(PublicCertificateHelper.GetX509Certificate2());
                    });
                }
#endif
            })
#if NETSTANDARD1_3
                    .UseUrls(_urls)
#endif
                    .Build();

            return(RunHost(_cts.Token));
        }
예제 #3
0
 private static void SetHttpsAndUrls(KestrelServerOptions options, IWireMockMiddlewareOptions wireMockMiddlewareOptions, IEnumerable <HostUrlDetails> urlDetails)
 {
     foreach (var urlDetail in urlDetails)
     {
         if (urlDetail.IsHttps)
         {
             if (wireMockMiddlewareOptions.CustomCertificateDefined)
             {
                 options.UseHttps(CertificateLoader.LoadCertificate(
                                      wireMockMiddlewareOptions.X509StoreName,
                                      wireMockMiddlewareOptions.X509StoreLocation,
                                      wireMockMiddlewareOptions.X509ThumbprintOrSubjectName,
                                      wireMockMiddlewareOptions.X509CertificateFilePath,
                                      wireMockMiddlewareOptions.X509CertificatePassword,
                                      urlDetail.Host)
                                  );
             }
             else
             {
                 options.UseHttps(PublicCertificateHelper.GetX509Certificate2());
             }
         }
     }
 }
예제 #4
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));
        }
        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.FileSystemHandler);
                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 =>
            {
#if NETSTANDARD1_3
                if (_urls.Any(u => u.StartsWith("https://", StringComparison.OrdinalIgnoreCase)))
                {
                    options.UseHttps(PublicCertificateHelper.GetX509Certificate2());
                }
#else
                // https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
                foreach (string url in _urls.Where(u => u.StartsWith("http://", StringComparison.OrdinalIgnoreCase)))
                {
                    PortUtils.TryExtract(url, out string protocol, out string host, out int port);
                    options.Listen(System.Net.IPAddress.Any, port);
                }

                foreach (string url in _urls.Where(u => u.StartsWith("https://", StringComparison.OrdinalIgnoreCase)))
                {
                    PortUtils.TryExtract(url, out string protocol, out string host, out int port);
                    options.Listen(System.Net.IPAddress.Any, port, listenOptions =>
                    {
                        listenOptions.UseHttps();     // PublicCertificateHelper.GetX509Certificate2()
                    });
                }
#endif
            })
#if NETSTANDARD1_3
                    .UseUrls(_urls)
#endif
                    .Build();

            return(RunHost(_cts.Token));
        }