我按以下方式配置我的文档存储:
store = new DocumentStore { Url = serverUrl }; store.Initialize();
我想知道如何确保先前或后期初始化但在打开会话之前是否客户端连接到服务器.我没有启动服务器,我仍然可以初始化存储,不知道为什么或者它是否默认创建嵌入式数据库,如果它无法在指定的URL下找到服务器.知道如何检查客户端和服务器之间是否建立了连接?
解决方法
初始化实际上不会打开连接. 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);