加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – RavenDB,以编程方式检查Server实例是否正在运行

发布时间:2020-12-15 08:31:00 所属栏目:百科 来源:网络整理
导读:我按以下方式配置我的文档存储: store = new DocumentStore { Url = serverUrl };store.Initialize(); 我想知道如何确保先前或后期初始化但在打开会话之前是否客户端连接到服务器.我没有启动服务器,我仍然可以初始化存储,不知道为什么或者它是否默认创建嵌
我按以下方式配置我的文档存储:
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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读