Отключите «ReloadOnChange» в исходном файле конфигурации для WebApplicationFactory. - PullRequest
0 голосов
/ 19 февраля 2020

Это и вопрос, и ответ. Я исправил свою проблему, но она кажется немного неправильной.

Моя первоначальная проблема - выполнение моих тестов интеграции ядра asp. net в конвейере bitbucket вызывает System.IO.IOException: The configured user limit (128) on the number of inotify instances has been reached. Некоторые решения требуют изменения некоторых установка через sysctl, но это ограничено битбакетом , так что это не вариант для меня.

Второй способ исправить это, как отмечалось в эти стекапроцесс ответы , это отключить reloadOnChange.

Моя новая проблема в том, как нам лучший сделать это для теста WebApplicationFactory?

Одно решение, которое сработало для меня, а именно наименьшее количество кода, похоже на полный взлом. Я перебираю все JsonConfigurationSource и устанавливаю ReloadOnChange на false.

Полное решение:

public class TestApplicationFactory : WebApplicationFactory<Startup>
{
    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        builder.ConfigureAppConfiguration(config =>
        {
            foreach (var source in config.Sources)
            {
                if (source is JsonConfigurationSource)
                {
                    var jsonConfigSource = (JsonConfigurationSource) source;
                    jsonConfigSource.ReloadOnChange = false;
                }
            }
        });
    }
}

Другое решение, которое я не пробовал, может быть переопределить CreateWebHostBuilder(). Тем не менее, кажется, что больше кода и много копий и вставок из по умолчанию .

Я что-то упустил? Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 19 февраля 2020

builder.ConfigureAppConfiguration предназначен для настройки вашего (основного) приложения.

Вы можете использовать builder.ConfigureHostConfiguration (см. документы ), чтобы явно настроить файлы для чтения для хост .

builder.ConfigureHostConfiguration((hostingContext, config) =>
{
    config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false);
});

Загружена конфигурация хоста. ASP. NET Ядро версии 3.0 построено на основе хоста Generi c (а не веб-хоста предыдущих версий).

...