2012-10-23 10 views
5

Otrzymuję komunikat Odmowa dostępu, gdy próbuję wdrożyć moją witrynę MVC4 z osadzoną instancją RavenDB do nowej funkcji podglądu witryn Azure. Witryna działa dobrze lokalnie.RavenDB osadzone na stronach internetowych Azure - Odmowa dostępu

Oto jak skonfigurować 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(); 

A oto ślad stosu, gdy przejdź do strony:

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

Czy zauważyłeś ten wątek? http://stackoverflow.com/questions/11529159/ravendb-on-azure-websites-access-denied –

+0

@MattJohnson - Twój komentarz odnosi się do usług w chmurze, podczas gdy pytanie dotyczy witryn internetowych. Byłbyś poprawny, gdyby kontekst był usługami w chmurze, jednak strony internetowe pozwalają na utrzymywanie środowiska do hostowania aplikacji internetowych bez obawy o wyczyszczenie dysku pamięci podręcznej po recyklingu Usługi Przetwarzania w Chmurze –

+0

@ SyntaxC4 Dobrze wiedzieć - dziękuję! –

Odpowiedz

3

Udało mi się go uruchomić, chociaż nie jest idealny. Możesz zauważyć w moim oryginalnym poście, że ustawiam UseEmbeddedHttpServer = true. To jest tak, że mogę przejść do http: [MyUrl]: 8081 i dostać RavendDB Management Studio, dzięki czemu mogę przeglądać moje dane. Z jakiegoś powodu RavenDB chce wykonać ten sam rodzaj sprawdzania portu, gdy ta właściwość jest ustawiona, tak jak ma to miejsce po ustawieniu ustawienia Port na automatyczne (Port = *).

Uważam, że RavenDB może potrzebować poprawki, tak aby honorowała ustawienie Port, gdy właściwość UseEmbeddedHttpServer ma wartość True, a także umożliwia ustawienie właściwości konfiguracji EmbeddedDocumentStore podczas tworzenia.

Jednak w międzyczasie można naprawdę uzyskać dostęp do witryny MVC4 za pomocą pliku EmbeddedDocumentStore na stronach internetowych Azure, po prostu określając port. Ponadto, musisz rzeczywiście używać konfiguracji AppSettings, zamiast ustawiać właściwość Configuration w EmbeddedDocumentStore podczas tworzenia (tak jak próbowałem to zrobić powyżej). Ten post (stackoverflow.com/questions/11529159/) pokazuje, jak to zrobić.

Niestety, nadal nie znalazłem sposobu na uruchomienie EmbeddedHttpServer, dzięki czemu mogę korzystać z Raven Management Studio. Jeśli coś wymyślę, tutaj zamieszczę rozwiązanie.

+0

Czy znalazłeś do tego slnk? Czy nadal nie możesz używać studia z azurewebity? – Larsi

+0

Nadal nie można korzystać ze studio z lazurowymi witrynami, ale według ayende w poniższym wątku jest to zgodne z projektem. https://groups.google.com/forum/?fromgroups=#!searchin/ravendb/Azure$20Websites/ravendb/HW463DU27P0/pursfAZ1ZigJ –

+0

Nadal nie można uzyskać dostępu do studia za pośrednictwem azurewebsites. Jednakże, zgodnie z opisem w grupie google RavenDB, jest to zgodne z projektem. –

0

Hi ten odpowiedział na RavenDb on Azure Websites - Access Denied Zasadniczo trzeba skonfigurować port w Web.config

+0

Jak już wspomniałem powyżej @ SyntaxC4, wypróbowałem rozwiązanie z tego postu i nie zadziałało. Wyjąłem kod konfiguracji, który określił Port i DataDirectory, i umieściłem te wartości w AppSettings na moim Web.config. Nadal mam błąd. W tej chwili nie mogę nic zrobić, ponieważ strona działa dobrze w moim lokalnym środowisku deweloperskim. –

+1

Masz rację, że wspomniany wpis będzie działał, ale w moim przypadku to nie zadziałało, ponieważ ustawiłem również UseEmbeddedHttpServer = True dla EmbeddedDocumentStore. Wierzę, że może to być problem, który może zostać rozwiązany przez zespół RavenDB w przyszłej wersji. –

Powiązane problemy