1
我已經使用異步HTTP WebRequest(C#)向本地RavenDB成功發出了啓動備份請求。我可以看到備份文件正在我指定的備份位置中創建。這很好。RavenDB備份:使用HTTP API檢查狀態[/ Raven/Backup/Status]失敗
啓動備份調用是異步的,所以我需要一些方法來確定備份過程何時完成。幸運的是RavenDB文檔狀態:「烏鴉/備份/狀態」:
您可以通過 查詢文件的關鍵檢查備份的狀態。當文檔中的IsRunning字段設置爲false時,備份完成。
有人可以請告訴我怎麼做這種檢查?
我已經嘗試發出另一個HTTP請求,但它總是返回一個狀態[400-錯誤的請求]。我很樂意實際使用這個文檔的代碼查詢數據庫,但我不知道「狀態文檔」的類型,所以不能調用任何通用的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;
}
謝謝。這工作得很好。這是uri中爲我所缺的'文檔'。僅供參考:我正在嘗試此操作,因爲我想通過http快速檢索備份,以便將此功能包含在我自己的管理界面中。我正在運行備份並壓縮成zip文件,然後下載。但是..然後,我通過Studio發現了導入/導出功能,並意識到這是做同樣的事情。有沒有一個API可以讓我生成一個raven.dump導出文件? – biofractal 2012-02-29 09:37:56