我已使用异步HTTP WebRequest(C#)成功向本地RavenDB发出了启动 - 备份请求。我可以看到备份文件是在我指定的备份位置创建的。这很好。
Start-Backup调用是异步的,因此我需要一些方法来确定备份过程何时完成。幸运的是RavenDB文档声明:
您可以通过查询文档来检查备份的状态 关键:“乌鸦/备份/状态”。备份完成时 文档中的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;
}
答案 0 :(得分:2)
Raven / Backup / Status是一个文档,而不是一个端点,如果您只想通过网络获取数据,请使用:
GET docs/Raven/Backup/Status
它会起作用。
但您也可以使用Raven.Backup.exe来执行此操作。