11
11
using Microsoft . AspNetCore . Hosting ;
12
12
using Microsoft . AspNetCore . Hosting . Server ;
13
13
using Microsoft . AspNetCore . Hosting . Server . Features ;
14
+ using Microsoft . AspNetCore . Server . Kestrel . Core ;
14
15
using Microsoft . AspNetCore . Testing ;
15
16
using Microsoft . Extensions . DependencyInjection ;
16
17
using Microsoft . Extensions . Hosting ;
@@ -38,6 +39,7 @@ public class InProcessTestServer<TStartup> : InProcessTestServer
38
39
private IHostApplicationLifetime _lifetime ;
39
40
private readonly IDisposable _logToken ;
40
41
private readonly IDisposable _extraDisposable ;
42
+ private readonly Action < KestrelServerOptions > _configureKestrelServerOptions ;
41
43
42
44
private readonly LogSinkProvider _logSinkProvider ;
43
45
private string _url ;
@@ -52,19 +54,20 @@ internal override event Action<LogRecord> ServerLogged
52
54
53
55
public override string Url => _url ;
54
56
55
- public static async Task < InProcessTestServer < TStartup > > StartServer ( ILoggerFactory loggerFactory , IDisposable disposable = null )
57
+ public static async Task < InProcessTestServer < TStartup > > StartServer ( ILoggerFactory loggerFactory , Action < KestrelServerOptions > configureKestrelServerOptions = null , IDisposable disposable = null )
56
58
{
57
- var server = new InProcessTestServer < TStartup > ( loggerFactory , disposable ) ;
59
+ var server = new InProcessTestServer < TStartup > ( loggerFactory , configureKestrelServerOptions , disposable ) ;
58
60
await server . StartServerInner ( ) ;
59
61
return server ;
60
62
}
61
63
62
- private InProcessTestServer ( ) : this ( loggerFactory : null , null )
64
+ private InProcessTestServer ( ) : this ( loggerFactory : null , null , null )
63
65
{
64
66
}
65
67
66
- private InProcessTestServer ( ILoggerFactory loggerFactory , IDisposable disposable )
68
+ private InProcessTestServer ( ILoggerFactory loggerFactory , Action < KestrelServerOptions > configureKestrelServerOptions , IDisposable disposable )
67
69
{
70
+ _configureKestrelServerOptions = configureKestrelServerOptions ;
68
71
_extraDisposable = disposable ;
69
72
_logSinkProvider = new LogSinkProvider ( ) ;
70
73
@@ -99,7 +102,7 @@ private async Task StartServerInner()
99
102
. SetMinimumLevel ( LogLevel . Trace )
100
103
. AddProvider ( new ForwardingLoggerProvider ( _loggerFactory ) ) )
101
104
. UseStartup ( typeof ( TStartup ) )
102
- . UseKestrel ( )
105
+ . UseKestrel ( o => _configureKestrelServerOptions ? . Invoke ( o ) )
103
106
. UseUrls ( url )
104
107
. UseContentRoot ( Directory . GetCurrentDirectory ( ) ) ;
105
108
} ) . Build ( ) ;
0 commit comments