6

ドキュメント ストアを次のように構成します。

store = new DocumentStore { Url = serverUrl };
store.Initialize();

初期化前または初期化後に、クライアントがサーバーに接続されているかどうかをセッションを開く前に確認する方法を知りたいです。サーバーを起動しませんでしたが、ストアを初期化することはできましたが、指定された URL の下にサーバーが見つからない場合にデフォルトで組み込みデータベースを作成する理由やかどうかはわかりません。クライアントとサーバーの間で接続が確立されていることを確認する方法はありますか?

4

1 に答える 1

8

初期化によって実際に接続が開かれるわけではありません。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);
于 2013-02-15T18:46:19.277 に答える