Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RavenDB备份:使用HTTP API[/Raven/Backup/status]检查状态失败_C#_Ravendb_Database Backups - Fatal编程技术网

C# RavenDB备份:使用HTTP API[/Raven/Backup/status]检查状态失败

C# RavenDB备份:使用HTTP API[/Raven/Backup/status]检查状态失败,c#,ravendb,database-backups,C#,Ravendb,Database Backups,我已使用异步HTTP WebRequest(C#)成功向本地RavenDB发出启动备份请求。我可以看到备份文件正在我指定的备份位置创建。这很好 启动备份调用是异步的,因此我需要某种方法来确定备份过程何时完成。幸运的是,RavenDB文档声明: 您可以通过使用查询文档来检查备份的状态 按键:“Raven/备份/状态”。备份完成时 文档中的IsRunning字段设置为false 有人能告诉我怎么做这张支票吗 我尝试发出另一个HTTP请求,但它总是返回状态[400 Bad request]。我很乐意

我已使用异步HTTP WebRequest(C#)成功向本地RavenDB发出启动备份请求。我可以看到备份文件正在我指定的备份位置创建。这很好

启动备份调用是异步的,因此我需要某种方法来确定备份过程何时完成。幸运的是,RavenDB文档声明:

您可以通过使用查询文档来检查备份的状态 按键:“Raven/备份/状态”。备份完成时 文档中的IsRunning字段设置为false

有人能告诉我怎么做这张支票吗

我尝试发出另一个HTTP请求,但它总是返回状态[400 Bad request]。我很乐意使用此文档的代码实际查询数据库,但我不知道“状态文档”的类型,因此无法调用任何通用的db.query()方法,老实说,我不知道如何使用“键”进行查询

这是我目前使用的代码

private void StartBackup(string backupLocation)
{
    var requestUri = new UriBuilder(Default.RavenUri){Path ="/admin/backup"};
    var formData = "{ 'BackupLocation': '" + backupLocation + "' }";
    var request = GetRequest(requestUri.Uri, formData);
    request.BeginGetResponse(asynchResult => CheckStatus(), null);

}

private void CheckStatus()
{
    var requestUri = new UriBuilder(Default.RavenUri){Path = "/Raven/Backup/Status"};
    var request = GetRequest(requestUri.Uri);
    var response = request.GetResponse();

}

private WebRequest GetRequest(Uri uri, string formData = null)
{
    var request = WebRequest.Create(uri);
    request.UseDefaultCredentials = true;
    request.PreAuthenticate = true;
    request.Credentials = CredentialCache.DefaultCredentials;

    if (formData == null)
    {
        request.Method = "GET";
        request.ContentLength = 0;
        return request;

    }

    request.Method = "POST";
    var data = Encoding.UTF8.GetBytes(formData);
    request.ContentLength = data.Length;
    request.ContentType = "application/x-www-form-urlencoded";
    using (var dataStream = request.GetRequestStream())
    {
        dataStream.Write(data, 0, data.Length);
    }
    return request;
}

Raven/Backup/Status是一个文档,而不是端点,如果您只想通过网络获取数据,请使用:

 GET docs/Raven/Backup/Status
它会起作用的


但您也可以使用Raven.Backup.exe来执行此操作。

谢谢。效果很好。正是uri中缺少的“文档”对我起了作用。仅供参考:我之所以尝试这一点,是因为我想找到一种通过http快速检索备份的方法,以便在我自己的管理界面中包含此功能。我正在运行备份并压缩到zip,然后下载。但是然后我通过Studio发现了导入/导出功能,并意识到这也在做同样的事情。是否有允许我生成raven.dump导出文件的API?