2011-11-13 19 views
15

estoy jugando con un incrustado RavenDB =>RavenDB-Embedded.1.0.499 paquete instalado a través de NuGet en Visual Studio 2010. Está siendo usado en un proyecto actual que empecé después de leer este excelente artículo de MSDN:Correr RavenDB como EmbeddableDocumentStore y Acceso a la Gestión RavenDB Estudio

Embedding RavenDB into an ASP.NET MVC 3 Application

Ahora me gustaría tener acceso a la (web UI) RavenDB Management Studio.

Seguí los pasos que se describen aquí: Is it possible to connect to an embedded DB with Raven Management Studio y aquí Running RavenDB in embedded mode with HTTP enabled pero no entiendo el punto.

Este es el código que estoy usando para inicializar el DocumentStore:

_documentStore = new EmbeddableDocumentStore 
      { 
       ConnectionStringName = "RavenDB", 
       UseEmbeddedHttpServer = true 
      }; 

y esta es la ConnectionString presente en Web.config:

<add name="RavenDB" connectionString="DataDir = ~\App_Data\Database" /> 

También leí los pasos descritos en RavenDB: Embedded Mode. Traté de iniciar el servidor manualmente:

// Start the HTTP server manually 
var server = new RavenDbHttpServer(documentStore.Configuration, 
documentStore.DocumentDatabase); 

server.Start(); 

pero el código anterior parece anticuado ya que no tengo RavenDbHttpServer, documentStore.Configuration y documentStore.DocumentDatabase. Logré encontrar Raven.Database.Server.HttpServer pero los otros objetos faltan en el _documentStore.

Entonces, la pregunta es:

Como puedo golpear la interfaz de usuario Web para visualizar mis documentos base de datos integrada? ¿Cuál es la URL que debo poner en la barra de direcciones de mi navegador?

Cualquier consejo se agradece.

EDIT: He encontrado la manera de hacerlo funcionar. Como ya he descrito en mi blog puede que no sea el mejor enfoque pero funciona:

RavenDB Embedded with Management Studio UI

Nota: Una desventaja de este método es que no soy capaz de acceder a la base de datos en mi aplicación porque una vez que ha sido abierto por el servidor, se bloquea. De esta manera tengo que detener el servidor y luego volver a cargar mi aplicación en el navegador.

Espero que los gurús de RavenDB tengan un enfoque mejor/correcto ... háganoslo saber.

Respuesta

12

Nunca tuve que ejecutar el servidor manualmente para acceder al estudio de gestión. Los pocos pasos que no se han mencionado en su pregunta que me suelen hacer:

// Add the following line prior to calling documentStore.Initialize() 
Raven.Database.Server.NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(8080); 

Copia Raven.Studio.xap en la carpeta raíz de mi proyecto web.

Cuando mi aplicación web se está ejecutando, se puede acceder al RavenDB Management Studio al http://localhost:8080.

+0

OMG: esto es raro ... Probé http: // localhost: 8080 pero al principio no funcionó. Ahora lo tengo funcionando sin siquiera agregar 'EnsureCanListenToWhenInNonAdminContext'. Imagínate. Creo que tenía otro servicio ejecutándose en el puerto 8080 en ese primer intento ... ¡Gracias John! –

+0

Esto funciona, pero si depuro una prueba de unidad, detiene la ejecución del servidor HTTP, así que no puedo usarlo a menos que no depure, lo que significa que no puedo depurar mis pruebas y ver el estudio, lo que significa que esto es inútil. Hay alguna manera de evitar esto? – kamranicus