2012-02-08 8 views
1

非同期HTTP WebRequest(C#)を使用してローカルRavenDBにStart-Backup要求を発行しました。バックアップファイルが指定されたバックアップ場所に作成されているのがわかります。これはいい。RavenDB Backup:HTTP API [/ Raven/Backup/Status]を使用して状態を確認できません。

Start-Backupコールは非同期であるため、バックアッププロセスがいつ完了するかを判断する方法が必要です。幸いRavenDBドキュメントの状態:「レイヴン/バックアップ/ステータス」:

あなたは で鍵を文書を照会することによって、バックアップの状態を確認することができます。ドキュメントの IsRunningフィールドがfalseに設定されていると、バックアップが完了します。

RavenDB Documentation

誰かがこのチェックを行う方法を私に示していただけますか?

別の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; 
} 

答えて

2

レイヴン/バックアップ/ステータスの使用、文書、ないエンドポイントです。

GET docs/Raven/Backup/Status 

そして、それは動作します。

しかし、Raven.Backup.exeを使用することもできます。

+0

ありがとうございました。それはうまくいった。それは私のためにした、ウリの不足している「文書」でした。参考までに:httpを使ってバックアップをすばやく取得する方法が必要だったので、これを試しています。この機能を自分の管理インターフェースに含めることができました。私はバックアップを実行し、圧縮してzipしてからダウンロードしていました。しかし、その後、私はスタジオを介してインポート/エクスポート機能を発見し、これはほとんど同じことをやっていることを認識しました。 raven.dumpエクスポートファイルを生成するAPIがありますか? – biofractal

関連する問題