Инициализация фактически не открывает соединение. Клиент RavenDB открывает и закрывает соединения по своему усмотрению.
Он не вернется во встроенную базу данных. Вы должны явно использовать EmbeddableDocumentStore
, если хотите встроенный экземпляр базы данных.
Если вы хотите проверить себя, если сервер установлен, вы можете просто что-то сделать и посмотреть, не сработает ли он. Вероятно, самое легкое, что вы могли бы сделать, это попытаться получить номер сборки сервера RavenDB. Это можно сделать, используя documentStore.AsyncDatabaseCommands.GetBuildNumberAsync()
.
Вот некоторые методы расширения, которые помогут сделать его еще проще. Поместите их в статическом классе:
public static bool TryGetServerVersion(this IDocumentStore documentStore, out BuildNumber buildNumber, int timeoutMilliseconds = 5000)
{
try
{
var task = documentStore.AsyncDatabaseCommands.GetBuildNumberAsync();
var success = task.Wait(timeoutMilliseconds);
buildNumber = task.Result;
return success;
}
catch
{
buildNumber = null;
return false;
}
}
public static bool IsServerOnline(this IDocumentStore documentStore, int timeoutMilliseconds = 5000)
{
BuildNumber buildNumber;
return documentStore.TryGetServerVersion(out buildNumber, timeoutMilliseconds);
}
Затем вы можете использовать их как это:
var online = documentStore.IsServerOnline();
Или так:
BuildNumber buildNumber;
var online = documentStore.TryGetServerVersion(out buildNumber);
Это помогает, будет стараться и доложить. Спасибо. –
Похоже, что мой объект AsyncDatabaseCOmmands имеет значение NULL? Вы делаете какую-либо другую инициализацию в хранилище документов, прежде чем дойти до этого момента? – tigerswithguitars
Мы попробовали это и обнаружили, что он начал сбой после последнего обновления клиента RavenDB. [Это обсуждение] (https://groups.google.com/forum/#!topic/ravendb/-bU7OJXdG4Q) в группе Google пришли к выводу, что вы должны использовать синхронный вызов. –