static IWebHost CreateWebHost(InMemoryListenerFactory listenerFactory) { return (WebHost.CreateDefaultBuilder() .UseSetting("preventHostingStartup", "true") .UseKestrel(ko => { ko.Listen(IPAddress.Loopback, ListenPort, listenOptions => { listenOptions.UseHttps(CreateSelfSignedCert()); }); }) .ConfigureServices(services => { services.AddSingleton <IConnectionListenerFactory>(listenerFactory); }) .ConfigureLogging(logging => { logging.AddFilter("Microsoft.AspNetCore", LogLevel.Warning); //logging.AddFilter("Microsoft.AspNetCore", LogLevel.Trace); }) .Configure(app => { app.UseRouting().UseEndpoints(routes => { routes.MapPost(ListenRoute, async ctx => { await ctx.Response.WriteAsync("ok").ConfigureAwait(false); }); }); }) .Build()); }
public void Setup() { _endpointUri = new Uri(new Uri($"https://{ListenHost}:{ListenPort}/"), ListenRoute); _listenerFactory = new InMemoryListenerFactory(); _client = CreateHttpClient(_listenerFactory); _webHost = CreateWebHost(_listenerFactory); _webHost.Start(); }
static HttpClient CreateHttpClient(InMemoryListenerFactory listenerFactory) { Func <string, int, CancellationToken, ValueTask <Stream> > dialer = async(host, port, cancellationToken) => { return(await listenerFactory.ConnectClientAsync(host, port, cancellationToken).ConfigureAwait(false)); }; var handler = new SocketsHttpHandler(); handler.GetType().GetProperty("ConnectCallback").SetValue(handler, dialer); handler.SslOptions.RemoteCertificateValidationCallback = delegate { return(true); }; var client = new HttpClient(handler); client.DefaultRequestHeaders.TryAddWithoutValidation("grpc-timeout", "15"); client.DefaultRequestHeaders.TryAddWithoutValidation("grpc-encoding", "gzip"); client.DefaultRequestHeaders.TryAddWithoutValidation("authorization", "Bearer y235.wef315yfh138vh31hv93hv8h3v"); return(client); }
public InMemoryListener(InMemoryListenerFactory factory, EndPoint endPoint) { _cancellationTokenSource = new CancellationTokenSource(); _factory = factory; EndPoint = endPoint; }