2012-09-19 11 views
6

He implementado lo que creo que es la forma correcta de eliminar una base de datos (Raven ejecutándose como un servicio), basada en la forma de 1.2 Raven Studio de hacerlo y portar el codificar a una consola de Windows.Cómo eliminar una base de datos RavenDB con Raven.Client.Lightweight

static class Program 
{  
    static void Main(string[] args) 
    { 
     try 
     { 
      using (var store = new DocumentStore { ConnectionStringName = "RavenDB" }.Initialize()) 
      { 

       var metadata = new RavenJObject(); 

       var factory = store.JsonRequestFactory; 

       const string url = "http://localhost:8080/admin/databases/raven-products?hard-delete=true"; 

       var credentials = CredentialCache.DefaultCredentials; 

       var convention = new DocumentConvention(); 

       var requestParams = new CreateHttpJsonRequestParams(store.DatabaseCommands, url, "DELETE", metadata, credentials, convention); 

       var request = factory.CreateHttpJsonRequest(requestParams); 

       request.ExecuteRequest(); 

      } 

     } 
     catch (Exception exception) 
     { 
      Console.WriteLine(exception); 
     } 

     Console.WriteLine("Press any key.."); 
     Console.ReadKey(); 

    } 

} 

Cuando se ejecuta este código, se produce la siguiente excepción.

System.Net.WebException: The remote server returned an error: (401) Unauthorized. at System.Net.HttpWebRequest.GetResponse() at Raven.Client.Connection.HttpJsonRequest.ReadJsonInternal(Func`1 getResponse) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\HttpJsonRequest.cs:line 297 at Raven.Client.Connection.HttpJsonRequest.ReadResponseJson() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\HttpJsonRequest.cs:line 218 at Raven.Client.Connection.HttpJsonRequest.ExecuteRequest() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Lightweight\Connection\HttpJsonRequest.cs:line 161 at Com.BuyEfficient.Raven.Service.Program.Main(String[] args) in c:\code\buyefficient_mvc\Com.BuyEfficient\Com.BuyEfficient.Raven .Service\Program.cs:line 39

Mi pregunta es "¿Cómo se configura correctamente las credenciales de manera que se autentica la aplicación de consola"?

Gracias, Stephen

Update1 Código actualizado para reflejar respuesta aceptada.

Respuesta

5

Intente utilizar CredentialCache.DefaultCredentials, o proporcione las credenciales de un usuario administrador en la máquina.

+0

Fitzchak, gracias. –

+0

Cuando la base de datos está bajo carga, no puedo eliminarla. En cambio, obtengo esta System.Net.WebException: la operación ha expirado. –

Cuestiones relacionadas