我目前正在.Net WebApi 2项目中试验FoundationDB。WebApi控制器对foundationdb集群执行一个简单的getrange,一切工作正常……如果我只运行一次这个项目。
第二次运行时,我得到了可怕的api_version_already_set错误,让一切重新启动并运行的唯一方法就是重新启动IIS.我发现了this类似的问题,答案中提出的唯一“解决方案”是针对每个应用程序域运行一个进程,这真的不是很理想。
我也尝试过.Net库中使用的this hack,但它所做的就是将api_version_already_set错误切换为network_already_setup或broken_promise。还有没有人找到更好的解决方案?
PS:为了暂时解决这个问题,我将WebApi作为自己的主机运行,这似乎解决了这个问题,但在测试环境之外结合使用FoundationDB和WebApi会让人感到恼火。
发布于 2018-07-12 20:23:06
出于同样的原因,此问题在版本5.x中仍然存在。每个进程只能创建(和关闭)一次网络线程,因此每个进程使用多个应用程序域的任何主机都将无法工作。似乎没有任何动机来解决这个问题(这主要只影响像.NET这样的托管平台,也许是Java?)。
幸运的是,对于ASP.NET核心和Kestrel这样的web主机(进程外,不使用AppDomains),这个问题将变得毫无意义。
这仍然会导致单元测试运行器在两次运行之间尝试缓存进程时出现问题。您需要禁用此缓存功能才能让它们可靠地运行。
https://stackoverflow.com/questions/22065765
复制相似问题