public void ConfigureEndpointDefaultsAppliesToNewEndpoints() { var options = new KestrelServerOptions(); options.ListenLocalhost(5000); Assert.Equal(HttpProtocols.Http1AndHttp2, options.CodeBackedListenOptions[0].Protocols); options.ConfigureEndpointDefaults(opt => { opt.Protocols = HttpProtocols.Http1; }); options.Listen(new IPEndPoint(IPAddress.Loopback, 5000), opt => { // ConfigureEndpointDefaults runs before this callback Assert.Equal(HttpProtocols.Http1, opt.Protocols); }); Assert.Equal(HttpProtocols.Http1, options.CodeBackedListenOptions[1].Protocols); options.ListenLocalhost(5000, opt => { Assert.Equal(HttpProtocols.Http1, opt.Protocols); opt.Protocols = HttpProtocols.Http2; // Can be overriden }); Assert.Equal(HttpProtocols.Http2, options.CodeBackedListenOptions[2].Protocols); options.ListenAnyIP(5000, opt => { opt.Protocols = HttpProtocols.Http2; }); Assert.Equal(HttpProtocols.Http2, options.CodeBackedListenOptions[3].Protocols); }
public async Task DefaultAddressBinderWithoutDevCertButHttpsConfiguredBindsToHttpsPorts() { var x509Certificate2 = TestResources.GetTestCertificate(); var logger = new MockLogger(); var addresses = new ServerAddressesFeature(); var services = new ServiceCollection(); services.AddLogging(); var options = new KestrelServerOptions() { // This stops the dev cert from being loaded IsDevCertLoaded = true, ApplicationServices = services.BuildServiceProvider() }; options.ConfigureEndpointDefaults(e => { if (e.IPEndPoint.Port == 5001) { e.UseHttps(new HttpsConnectionAdapterOptions { ServerCertificate = x509Certificate2 }); } }); var endpoints = new List <ListenOptions>(); await AddressBinder.BindAsync(addresses, options, logger, listenOptions => { endpoints.Add(listenOptions); return(Task.CompletedTask); }); Assert.Contains(endpoints, e => e.IPEndPoint.Port == 5000 && !e.IsTls); Assert.Contains(endpoints, e => e.IPEndPoint.Port == 5001 && e.IsTls); }
public void ConfigureEndpointDefaultsAppliesToNewEndpoints() { var options = new KestrelServerOptions(); options.ListenLocalhost(5000); Assert.True(options.ListenOptions[0].NoDelay); options.ConfigureEndpointDefaults(opt => { opt.NoDelay = false; }); options.Listen(new IPEndPoint(IPAddress.Loopback, 5000), opt => { // ConfigureEndpointDefaults runs before this callback Assert.False(opt.NoDelay); }); Assert.False(options.ListenOptions[1].NoDelay); options.ListenLocalhost(5000, opt => { Assert.False(opt.NoDelay); opt.NoDelay = true; // Can be overriden }); Assert.True(options.ListenOptions[2].NoDelay); options.ListenAnyIP(5000, opt => { Assert.False(opt.NoDelay); }); Assert.False(options.ListenOptions[3].NoDelay); }
/// <summary> /// Configures AirDrop defaults for Kestrel. /// </summary> /// <param name="options">A <see cref="KestrelServerOptions"/> instance to configure.</param> /// <param name="cert">An <see cref="X509Certificate2"/> representing the certificate to use for the AirDrop HTTPS endpoint.</param> public static void ConfigureAirDropDefaults(this KestrelServerOptions options, X509Certificate2 cert) { if (cert == null) { throw new ArgumentNullException(nameof(cert)); } var airDropOptions = options.ApplicationServices.GetRequiredService <IOptions <AirDropOptions> >(); options.ConfigureEndpointDefaults( endpointDefaults => { endpointDefaults.UseHttps(cert); }); options.ListenAnyIP(airDropOptions.Value.ListenPort); }
private static void ConfigureKestrel(KestrelServerOptions kestrel) { kestrel.ConfigureEndpointDefaults(options => options.UseProtocolMultiplexing()); }