我目前正在.Net WebApi 2项目中使用FoundationDB进行实验。 WebApi控制器对foundationdb集群执行简单的getrange,一切正常......如果我只运行一次项目。
第二次运行它时,我遇到了可怕的api_version_already_set
错误,并且让所有内容重新启动并运行的唯一方法是重新启动IIS。我发现了this类似的问题,也是唯一的"解决方案"答案中提出的是针对每个App Domain运行一个流程,这并不是非常理想的。
我还尝试过.Net库中使用的this hack,但它只是将api_version_already_set
错误切换为network_already_setup
或broken_promise
。
还有其他人找到了更好的解决方案吗?
答案 0 :(得分:0)
由于相同的原因,此问题在5.x版中仍然存在。每个进程只能创建(和关闭)网络线程,因此每个进程使用多个Application Domain的任何主机都将无法工作。似乎没有任何动力来解决这个问题(这主要只影响.NET等受管理平台,也许是Java?)。
幸运的是,对于ASP.NET Core和像Kestrel这样的Web主机(进程过时,不使用AppDomains),这个问题将变得毫无意义。
这仍然可能导致单元测试运行程序出现问题,这些运行程序尝试在两次运行之间缓存进程。您需要禁用此缓存功能,以使其可靠运行。