【问题标题】:Using FoundationDB in a WebApi 2 project在 WebApi 2 项目中使用 FoundationDB
【发布时间】:2014-02-27 10:31:05
【问题描述】:

我目前正在一个 .Net WebApi 2 项目中使用 FoundationDB 进行实验。 WebApi 控制器对foundationdb 集群执行一个简单的getrange,一切正常……如果我只运行一次项目。

第二次运行它时,我得到了可怕的api_version_already_set 错误,让一切重新启动并运行的唯一方法是重新启动 IIS。我发现this 类似的问题,答案中提出的唯一“解决方案”是为每个应用程序域运行一个进程,这并不理想。

我也尝试过在.Net 库中使用this hack,但它所做的只是将api_version_already_set 错误切换为network_already_setupbroken_promise。 有没有其他人找到更好的解决方案?

PS:为了临时解决这个问题,我将 WebApi 作为自己的主机运行,这似乎解决了问题,但是在测试环境之外使用 FoundationDB 和 WebApi 很烦人。

【问题讨论】:

    标签: asp.net-web-api foundationdb


    【解决方案1】:

    出于同样的原因,此问题在 5.x 版中仍然存在。每个进程只能创建(和关闭)一次网络线程,因此每个进程使用多个应用程序域的任何主机都将无法工作。似乎没有任何动力去解决这个问题(这主要只影响 .NET 等托管平台,也许是 Java?)。

    幸运的是,有了 ASP.NET Core 和像 Kestrel 这样的 Web 主机(进程外,不使用 AppDomains),这个问题将变得没有意义。

    这仍然会导致单元测试运行器出现问题,这些运行器试图在运行之间缓存进程。您需要禁用此缓存功能才能使其可靠运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 2018-09-26
      • 2013-10-09
      • 2020-12-22
      • 1970-01-01
      相关资源
      最近更新 更多