Использование FoundationDB в проекте WebApi 2

В настоящее время я экспериментирую с FoundationDB в проекте.Net WebApi 2. Контроллер WebApi выполняет простой переход на кластер foundationdb, и все работает нормально... если я запускаю проект только один раз.

Во второй раз, когда я запускаю его, я боюсь api_version_already_set ошибка, и единственный способ запустить все снова и снова - перезапустить IIS. Я нашел этот похожий вопрос, и единственное "решение", предложенное в ответе, состоит в том, чтобы запустить процесс для домена приложения, который на самом деле не идеален.

Я также попробовал этот хак, используемый в библиотеке.Net, но все, что он делает, это переключает api_version_already_set ошибка в network_already_setup или же broken_promise, Кто-нибудь еще нашел лучшее решение?

PS: Чтобы временно решить эту проблему, я использую WebApi в качестве самостоятельного хоста, и это, похоже, решает проблему, но делает использование FoundationDB в сочетании с WebApi раздражающим вне тестовой среды.

1 ответ

Эта проблема все еще присутствует в версии 5.x по той же причине. Сетевой поток может быть создан (и отключен) только один раз для каждого процесса, поэтому любой хост, использующий несколько доменов приложений для одного процесса, не будет работать. Похоже, нет никакого стимула для решения этой проблемы (которая в основном влияет только на управляемые платформы, такие как.NET, может быть, Java?).

К счастью, с помощью ASP.NET ядра и веб-хосты, как пустельга (вне процесса, не использует AppDomains), этот вопрос станет спорным.

Это может по-прежнему вызывать проблемы с исполнителями модульных тестов, которые пытаются кэшировать процесс между запусками. Вам необходимо отключить эту функцию кэширования, чтобы они работали надежно.

Другие вопросы по тегам