【发布时间】:2022-04-27 23:51:39
【问题描述】:
这既是一个问题,也是一个答案。我已经解决了我的问题,但似乎有点不对。
我最初的问题是在 bitbucket 管道中运行我的 asp.net 核心集成测试导致System.IO.IOException: The configured user limit (128) on the number of inotify instances has been reached. 一些解决方案要求通过sysctl 更改某些设置,但那是restricted by bitbucket,所以这不是一个选项我。
如these stackoverflow answers 所述,解决此问题的第二种方法是关闭reloadOnChange。
我现在的新问题是,我们如何最好为测试WebApplicationFactory做到这一点?
一个对我有用的解决方案,它是最少的代码,似乎完全是 hack。我遍历所有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;
}
}
});
}
}
另一个我没有尝试过的解决方案可能是override CreateWebHostBuilder()。但是,default one 似乎需要更多代码和大量复制和粘贴。
我错过了什么吗?有没有更好的方法来做到这一点?
【问题讨论】:
标签: c# asp.net-core bitbucket-pipelines