2012-10-23 16 views
5

Viene visualizzato un messaggio di accesso negato quando si tenta di distribuire il sito MVC4 con un'istanza incorporata di RavenDB nella nuova funzionalità di anteprima dei siti Web di Azure. Il sito funziona bene localmente.RavenDB incorporato nei siti Web di Azure - Accesso negato

Ecco come configuro Raven:

//Initialize the RavenDB Data Store 
     Raven.Database.Server.NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(8887); 

     var documentStore = new EmbeddableDocumentStore() 
     { 
      DataDirectory = "~\\App_Data", 
      UseEmbeddedHttpServer = true, 
      Configuration = { Port = 8887 } 
     }; 

     documentStore.Initialize(); 

E qui è la traccia dello stack quando navigo sul sito:

Access is denied 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Net.NetworkInformation.NetworkInformationException: Access is denied 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[NetworkInformationException (0x5): Access is denied] 
    System.Net.NetworkInformation.SystemIPGlobalProperties.GetAllTcpConnections() +1570717 
    System.Net.NetworkInformation.SystemIPGlobalProperties.GetActiveTcpListeners() +74 
    Raven.Database.Util.PortUtil.FindPort() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Database\Util\PortUtil.cs:110 
    Raven.Database.Util.PortUtil.GetPort(String portStr) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Database\Util\PortUtil.cs:44 
    Raven.Database.Config.InMemoryRavenConfiguration.Initialize() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Database\Config\InMemoryRavenConfiguration.cs:170 
    Raven.Database.Config.RavenConfiguration.LoadConfigurationAndInitialize(IEnumerable`1 values) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Database\Config\RavenConfiguration.cs:28 
    Raven.Database.Config.RavenConfiguration..ctor() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Database\Config\RavenConfiguration.cs:17 
    Raven.Client.Embedded.EmbeddableDocumentStore.get_Configuration() in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Embedded\EmbeddableDocumentStore.cs:63 
    Raven.Client.Embedded.EmbeddableDocumentStore.set_DataDirectory(String value) in c:\Builds\RavenDB-Unstable-v1.2\Raven.Client.Embedded\EmbeddableDocumentStore.cs:90 
    Solarity.DesignSearch.Website.Bootstrapper.BuildUnityContainer() in c:\a\src\Solarity.DesignSearch\Solarity.DesignSearch.Website\Bootstrapper.cs:35 
    Solarity.DesignSearch.Website.Bootstrapper.Initialise() in c:\a\src\Solarity.DesignSearch\Solarity.DesignSearch.Website\Bootstrapper.cs:20 
    Solarity.DesignSearch.Website.MvcApplication.Application_Start() in c:\a\src\Solarity.DesignSearch\Solarity.DesignSearch.Website\Global.asax.cs:23 

[HttpException (0x80004005): Access is denied] 
    System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9859725 
    System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118 
    System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172 
    System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336 
    System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296 

[HttpException (0x80004005): Access is denied] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9873912 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254 
+0

Avete notato questa discussione? http://stackoverflow.com/questions/11529159/ravendb-on-azure-websites-access-denied –

+0

@MattJohnson - Il tuo commento si riferisce ai servizi cloud mentre la domanda è rivolta ai siti Web. Sarebbe corretto se il contesto fosse Cloud Services, tuttavia, Web Sites consente un ambiente persistente per l'hosting di applicazioni Web senza la preoccupazione della cancellazione del disco della cache al momento del riciclo del servizio cloud –

+0

@ SyntaxC4 Buono a sapersi - grazie! –

risposta

3

Sono riuscito a farlo funzionare, anche se non è l'ideale. Nel mio post originale potresti notare che sto impostando UseEmbeddedHttpServer = true. Questo è così che posso navigare su http: [MyUrl]: 8081 e ottenere RavendDB Management Studio in modo che possa sfogliare i miei dati. Per qualche ragione, RavenDB vuole fare lo stesso tipo di controllo della porta quando questa proprietà è impostata come fa quando si imposta l'impostazione Port su automatico (Port = *).

Credo che RavenDB possa aver bisogno di una correzione in modo che rispetti le impostazioni della porta quando UseEmbeddedHttpServer è True e consente anche di impostare la proprietà Configuration di EmbeddedDocumentStore al momento della creazione.

Ma nel frattempo, puoi veramente far funzionare il sito MVC4 con un EmbeddedDocumentStore su siti Web di Azure semplicemente specificando una porta. Inoltre, devi effettivamente utilizzare la configurazione AppSettings piuttosto che impostare la proprietà Configuration di EmbeddedDocumentStore al momento della creazione (come ho cercato di fare sopra). Questo post (stackoverflow.com/questions/11529159/) mostra come farlo.

Purtroppo, non ho ancora trovato un modo per eseguire EmbeddedHttpServer in modo da poter utilizzare Raven Management Studio. Se capisco come, pubblicherò una soluzione qui.

+0

Hai trovato una sln a questo? O sei ancora in grado di utilizzare studio con azurewebsites? – Larsi

+0

Non è ancora possibile utilizzare Studio con siti Web azzurri, ma secondo ayende nel thread seguente, questo è di progettazione. https://groups.google.com/forum/?fromgroups=#!searchin/ravendb/Azure$20Websites/ravendb/HW463DU27P0/pursfAZ1ZigJ –

+0

Non riesci ancora ad accedere a Studio tramite azurewebsites. Tuttavia, secondo ayende nel gruppo google RavenDB, questo è di design. –

0

Hi questo è stato risposto sul RavenDb on Azure Websites - Access Denied Fondamentalmente è necessario configurare la porta in Web.config

+0

Come accennato a @ SyntaxC4 sopra, ho provato la soluzione da quel post e non ha funzionato. Ho estratto il codice di configurazione che ha specificato Port e DataDirectory e ho inserito tali valori in AppSettings di my Web.config. Ho ancora ottenuto l'errore. Sono in perdita a questo punto poiché il sito funziona bene nel mio ambiente di sviluppo locale. –

+1

Hai ragione sul fatto che il post che menzioni funzionerà, ma nel mio caso non ha funzionato perché stavo anche impostando UseEmbeddedHttpServer = True setting per EmbeddedDocumentStore. Credo che questo potrebbe essere un problema che potrebbe essere risolto dal team RavenDB in una build futura. –

Problemi correlati