Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Newton-King <james@newtonking.com>2022-11-13 07:08:20 +0300
committerJames Newton-King <james@newtonking.com>2022-11-13 07:08:20 +0300
commit2803ff75e0c3695ed786f26da306aadcc409e74f (patch)
treea43602446f63e964bd930bea033a6cc47ecee0b3
parent8e26c9c45d362eadd3fb239a1f03a1186fbdbd7a (diff)
API review feedback
-rw-r--r--src/Servers/Kestrel/Kestrel/src/WebHostBuilderKestrelExtensions.cs20
-rw-r--r--src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Unshipped.txt6
-rw-r--r--src/Servers/Kestrel/Transport.NamedPipes/src/ServiceCollectionNamedPipeExtensions.cs36
-rw-r--r--src/Servers/Kestrel/Transport.NamedPipes/src/WebHostBuilderNamedPipeExtensions.cs43
-rw-r--r--src/Servers/Kestrel/Transport.NamedPipes/test/WebHostTests.cs16
5 files changed, 65 insertions, 56 deletions
diff --git a/src/Servers/Kestrel/Kestrel/src/WebHostBuilderKestrelExtensions.cs b/src/Servers/Kestrel/Kestrel/src/WebHostBuilderKestrelExtensions.cs
index cae4dd6dd1..28c356e30c 100644
--- a/src/Servers/Kestrel/Kestrel/src/WebHostBuilderKestrelExtensions.cs
+++ b/src/Servers/Kestrel/Kestrel/src/WebHostBuilderKestrelExtensions.cs
@@ -29,6 +29,15 @@ public static class WebHostBuilderKestrelExtensions
/// </returns>
public static IWebHostBuilder UseKestrel(this IWebHostBuilder hostBuilder)
{
+ hostBuilder.ConfigureServices(services =>
+ {
+ // Don't override an already-configured transport
+ services.TryAddSingleton<IConnectionListenerFactory, SocketTransportFactory>();
+
+ services.AddTransient<IConfigureOptions<KestrelServerOptions>, KestrelServerOptionsSetup>();
+ services.AddSingleton<IServer, KestrelServerImpl>();
+ });
+
hostBuilder.UseQuic(options =>
{
// Configure server defaults to match client defaults.
@@ -37,16 +46,9 @@ public static class WebHostBuilderKestrelExtensions
options.DefaultCloseErrorCode = (long)Http3ErrorCode.NoError;
});
- return hostBuilder.ConfigureServices(services =>
- {
- // Don't override an already-configured transport
- services.TryAddSingleton<IConnectionListenerFactory, SocketTransportFactory>();
+ hostBuilder.UseNamedPipes();
- services.AddNamedPipes();
-
- services.AddTransient<IConfigureOptions<KestrelServerOptions>, KestrelServerOptionsSetup>();
- services.AddSingleton<IServer, KestrelServerImpl>();
- });
+ return hostBuilder;
}
/// <summary>
diff --git a/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Unshipped.txt b/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Unshipped.txt
index 2ac2f8bb1c..74e0993c7a 100644
--- a/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Unshipped.txt
+++ b/src/Servers/Kestrel/Transport.NamedPipes/src/PublicAPI.Unshipped.txt
@@ -1,4 +1,5 @@
#nullable enable
+Microsoft.AspNetCore.Hosting.WebHostBuilderNamedPipeExtensions
Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions
Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.CurrentUserOnly.get -> bool
Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.CurrentUserOnly.set -> void
@@ -9,6 +10,5 @@ Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptio
Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.NamedPipeTransportOptions() -> void
Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.PipeSecurity.get -> System.IO.Pipes.PipeSecurity?
Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions.PipeSecurity.set -> void
-Microsoft.Extensions.DependencyInjection.ServiceCollectionNamedPipeExtensions
-static Microsoft.Extensions.DependencyInjection.ServiceCollectionNamedPipeExtensions.AddNamedPipes(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
-static Microsoft.Extensions.DependencyInjection.ServiceCollectionNamedPipeExtensions.AddNamedPipes(this Microsoft.Extensions.DependencyInjection.IServiceCollection! services, System.Action<Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions!>! configureOptions) -> Microsoft.Extensions.DependencyInjection.IServiceCollection!
+static Microsoft.AspNetCore.Hosting.WebHostBuilderNamedPipeExtensions.UseNamedPipes(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder!
+static Microsoft.AspNetCore.Hosting.WebHostBuilderNamedPipeExtensions.UseNamedPipes(this Microsoft.AspNetCore.Hosting.IWebHostBuilder! hostBuilder, System.Action<Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.NamedPipeTransportOptions!>! configureOptions) -> Microsoft.AspNetCore.Hosting.IWebHostBuilder!
diff --git a/src/Servers/Kestrel/Transport.NamedPipes/src/ServiceCollectionNamedPipeExtensions.cs b/src/Servers/Kestrel/Transport.NamedPipes/src/ServiceCollectionNamedPipeExtensions.cs
deleted file mode 100644
index a300b60bfe..0000000000
--- a/src/Servers/Kestrel/Transport.NamedPipes/src/ServiceCollectionNamedPipeExtensions.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-
-using Microsoft.AspNetCore.Connections;
-using Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes;
-using Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.Internal;
-
-namespace Microsoft.Extensions.DependencyInjection;
-
-/// <summary>
-/// <see cref="IServiceCollection" /> extension methods to configure the Named Pipes transport to be used by Kestrel.
-/// </summary>
-public static class ServiceCollectionNamedPipeExtensions
-{
- /// <summary>
- /// Specify Named Pipes as the transport to be used by Kestrel.
- /// </summary>
- /// <param name="services">The <see cref="IServiceCollection" /> to add services to.</param>
- /// <returns>The service collection.</returns>
- public static IServiceCollection AddNamedPipes(this IServiceCollection services)
- {
- services.AddSingleton<IConnectionListenerFactory, NamedPipeTransportFactory>();
- return services;
- }
-
- /// <summary>
- /// Specify Named Pipes as the transport to be used by Kestrel.
- /// </summary>
- /// <param name="services">The <see cref="IServiceCollection" /> to add services to.</param>
- /// <param name="configureOptions">A callback to configure transport options.</param>
- /// <returns>The service collection.</returns>
- public static IServiceCollection AddNamedPipes(this IServiceCollection services, Action<NamedPipeTransportOptions> configureOptions)
- {
- return services.AddNamedPipes().Configure(configureOptions);
- }
-}
diff --git a/src/Servers/Kestrel/Transport.NamedPipes/src/WebHostBuilderNamedPipeExtensions.cs b/src/Servers/Kestrel/Transport.NamedPipes/src/WebHostBuilderNamedPipeExtensions.cs
new file mode 100644
index 0000000000..40918a2ec2
--- /dev/null
+++ b/src/Servers/Kestrel/Transport.NamedPipes/src/WebHostBuilderNamedPipeExtensions.cs
@@ -0,0 +1,43 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+
+using Microsoft.AspNetCore.Connections;
+using Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes;
+using Microsoft.AspNetCore.Server.Kestrel.Transport.NamedPipes.Internal;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Microsoft.AspNetCore.Hosting;
+
+/// <summary>
+/// <see cref="IWebHostBuilder" /> extension methods to configure the Named Pipes transport to be used by Kestrel.
+/// </summary>
+public static class WebHostBuilderNamedPipeExtensions
+{
+ /// <summary>
+ /// Specify Named Pipes as the transport to be used by Kestrel.
+ /// </summary>
+ /// <param name="hostBuilder">The <see cref="IWebHostBuilder"/> to configure.</param>
+ /// <returns>The <see cref="IWebHostBuilder"/>.</returns>
+ public static IWebHostBuilder UseNamedPipes(this IWebHostBuilder hostBuilder)
+ {
+ hostBuilder.ConfigureServices(services =>
+ {
+ services.AddSingleton<IConnectionListenerFactory, NamedPipeTransportFactory>();
+ });
+ return hostBuilder;
+ }
+
+ /// <summary>
+ /// Specify Named Pipes as the transport to be used by Kestrel.
+ /// </summary>
+ /// <param name="hostBuilder">The <see cref="IWebHostBuilder"/> to configure.</param>
+ /// <param name="configureOptions">A callback to configure transport options.</param>
+ /// <returns>The <see cref="IWebHostBuilder"/>.</returns>
+ public static IWebHostBuilder UseNamedPipes(this IWebHostBuilder hostBuilder, Action<NamedPipeTransportOptions> configureOptions)
+ {
+ return hostBuilder.UseNamedPipes().ConfigureServices(services =>
+ {
+ services.Configure(configureOptions);
+ });
+ }
+}
diff --git a/src/Servers/Kestrel/Transport.NamedPipes/test/WebHostTests.cs b/src/Servers/Kestrel/Transport.NamedPipes/test/WebHostTests.cs
index 54fe381332..c4ee759c79 100644
--- a/src/Servers/Kestrel/Transport.NamedPipes/test/WebHostTests.cs
+++ b/src/Servers/Kestrel/Transport.NamedPipes/test/WebHostTests.cs
@@ -94,6 +94,14 @@ public class WebHostTests : LoggedTest
listenOptions.Protocols = HttpProtocols.Http1;
});
})
+ .UseNamedPipes(options =>
+ {
+ var ps = new PipeSecurity();
+ ps.AddAccessRule(new PipeAccessRule("Users", PipeAccessRights.ReadWrite | PipeAccessRights.CreateNewInstance, AccessControlType.Allow));
+
+ options.PipeSecurity = ps;
+ options.CurrentUserOnly = false;
+ })
.Configure(app =>
{
app.Run(async context =>
@@ -119,14 +127,6 @@ public class WebHostTests : LoggedTest
.ConfigureServices(services =>
{
AddTestLogging(services);
- services.AddNamedPipes(options =>
- {
- var ps = new PipeSecurity();
- ps.AddAccessRule(new PipeAccessRule("Users", PipeAccessRights.ReadWrite | PipeAccessRights.CreateNewInstance, AccessControlType.Allow));
-
- options.PipeSecurity = ps;
- options.CurrentUserOnly = false;
- });
});
using (var host = builder.Build())