C# RavenDB备份:使用HTTP API[/Raven/Backup/status]检查状态失败
我已使用异步HTTP WebRequest(C#)成功向本地RavenDB发出启动备份请求。我可以看到备份文件正在我指定的备份位置创建。这很好 启动备份调用是异步的,因此我需要某种方法来确定备份过程何时完成。幸运的是,RavenDB文档声明: 您可以通过使用查询文档来检查备份的状态 按键:“Raven/备份/状态”。备份完成时 文档中的IsRunning字段设置为false 有人能告诉我怎么做这张支票吗 我尝试发出另一个HTTP请求,但它总是返回状态[400 Bad request]。我很乐意使用此文档的代码实际查询数据库,但我不知道“状态文档”的类型,因此无法调用任何通用的db.query()方法,老实说,我不知道如何使用“键”进行查询 这是我目前使用的代码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]。我很乐意
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?