Это и вопрос, и ответ. Я исправил свою проблему, но она кажется немного неправильной.
Моя первоначальная проблема - выполнение моих тестов интеграции ядра 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()
. Тем не менее, кажется, что больше кода и много копий и вставок из по умолчанию .
Я что-то упустил? Есть ли лучший способ сделать это?