2011-11-13 15 views
15

Sto giocando con un pacchetto RavenDB incorporato>>RavenDB-Embedded.1.0.499 installato tramite NuGet in Visual Studio 2010. Viene utilizzato in un progetto corrente che ho avviato dopo aver letto questo eccellente articolo MSDN:Esecuzione di RavenDB come EmbeddableDocumentStore e accesso a RavenDB Management Studio

Embedding RavenDB into an ASP.NET MVC 3 Application

Ora vorrei accedere al RavenDB Management Studio (Web UI).

Ho seguito i passaggi descritti qui: Is it possible to connect to an embedded DB with Raven Management Studio e qui Running RavenDB in embedded mode with HTTP enabled ma non ho capito il punto.

Questo è il codice che sto usando per inizializzare il DocumentStore:

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

e questo è il ConnectionString presente in Web.config:

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

Ho letto anche le operazioni descritte nel RavenDB: Embedded Mode. Ho cercato di avviare il server manualmente:

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

server.Start(); 

ma il codice di cui sopra sembra superata poiché non ho RavenDbHttpServer, documentStore.Configuration e documentStore.DocumentDatabase. Sono riuscito a trovare Raven.Database.Server.HttpServer ma gli altri oggetti mancano nello _documentStore.

Quindi, la domanda è:

Come posso colpire l'interfaccia utente Web di visualizzare i miei documenti di database incorporati? Qual è l'URL che dovrei inserire nella barra degli indirizzi del mio browser?

Qualsiasi consiglio è apprezzato.

MODIFICA: Ho trovato un modo per farlo funzionare. Come ho descritto nel mio post sul blog, non può essere l'approccio migliore, ma funziona:

RavenDB Embedded with Management Studio UI

Nota: uno svantaggio dell'approccio di cui sopra è che io non sono in grado di accedere al database nella mia app perché una volta che è stato aperto dal server viene bloccato. In questo modo devo fermare il server e ricaricare la mia app nel browser.

Spero che i guru di RavenDB abbiano un approccio migliore/corretto ... fatecelo sapere.

risposta

12

Non ho mai dovuto eseguire manualmente il server per accedere allo studio di gestione. I pochi passi che non sono stati menzionati nella domanda che faccio di solito:

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

Copia Raven.Studio.xap nella cartella principale del mio progetto web.

Quando la mia applicazione Web è in esecuzione, RavenDB Management Studio è quindi accessibile a http://localhost:8080.

+0

OMG: questo è strano ... avevo provato http: // localhost: 8080 ma inizialmente non funzionava. Ora l'ho fatto funzionare anche senza aggiungere 'GuaranteCanListenToWhenInNonAdminContext'. Vai a capire. Penso di avere un altro servizio in esecuzione sulla porta 8080 al primo tentativo ... Grazie John! –

+0

Funziona, ma se eseguo il debug di un test di unità, interrompe l'esecuzione del server HTTP, quindi non posso utilizzarlo a meno che non esegua il debug, il che significa che non riesco a eseguire il debug dei test e visualizzare lo studio, il che significa che è inutile. c'è un modo per evitarlo? – kamranicus