Метод
Configure
определен в классе WebHostBuilderExtensions
в сборке Microsoft.AspNetCore.Hosting
, и его подпись выглядит следующим образом:
public static IWebHostBuilder Configure(this IWebHostBuilder hostBuilder,
Action<IApplicationBuilder> configureApp)
{
...
}
Это означает, что вы должны передать действие, содержащее IApplicationBuilder
экземпляр реализации. Нечто подобное вы можете найти в классе Startup
в тестируемом API.
public void Configure(IApplicationBuilder app)
{
}
Другие зависимости также могут быть внедрены в методе Configure
, при условии, что они зарегистрированы в используемом вами контейнере DI. Configure()
вызывается средой выполнения, поэтому вам обычно не нужно явно вызывать ее.
Если вам нужно получить экземпляр вашей конфигурации в методе Configure
, вы можете получить его (или любую другую зарегистрированную зависимость) из экземпляра IServiceProvider
, который предоставляется объектом IApplicationBuilder
объекта настраивая действие, которое вы передаете методу:
Server = new TestServer(new WebHostBuilder()
.Configure(appBuilder =>
{
//get the required service from the appBuilder's ApplicationServices property
var config = appBuilder.ApplicationServices.GetService<IConfiguration>();
var section = config.GetSection("YourSection");
//Use your section here.
})
.UseStartup<TestStartup>()
Однако, пожалуйста, будьте осторожны, потому что в этот момент может быть уже слишком поздно для настройки службы. Configure()
в основном используется для настройки конвейера запросов. Даже при том, что у вас может быть законный вариант использования для использования конфигурации в нем, вы должны убедиться, что вы не можете сделать это в методе ConfigureServices()
.
Надеюсь, это поможет!