2012-07-17 14 views
6

gram dookoła z nowymi strony cechę na Azure i próbuje witryny MVC działa z RavenDB w trybie osadzonych. Wszystko działa prawidłowo lokalnie, ale prowadzenie rozmieszczony witryny w błękicie otrzymuję ten błąd:RavenDb na Azure strony - Odmowa dostępu

System.Net.NetworkInformation.NetworkInformationException: Odmowa dostępu

Dzieje się tak, gdy tworzę instancję db w global.asax:

Store = EmbeddableDocumentStore { ConnectionStringName = "RavenDb" }; 

Moje ciąg połączenia jest:

<add name="RavenDb" connectionString="DataDir=~\App_Data\Raven" /> 

Dzięki!

+0

Jaki jest ślad stosu? –

Odpowiedz

12

Jeżeli port nie jest określony dla RavenDb będzie wyjść i próbować odnaleźć swój własny, robi to poprzez wywołanie IPGlobalProperties.GetActiveTcpListeners().

RavenDb | PortUtil.cs

var activeTcpListeners = IPGlobalProperties 
         .GetIPGlobalProperties() 
         .GetActiveTcpListeners(); 

Wywołanie GetActiveTcpListeners() intern wywołuje funkcję Win32 GetTcpTable() który próbuje wyliczyć wszystkich możliwych kombinacji portów na hoście. Z oczywistych powodów nie byłoby dobrym scenariuszem, aby umożliwić ludziom skanowanie portów w witrynach Windows Azure. Co oznacza, że ​​GetTcpTable operacja zawiedzie i gdy coś się nie powiedzie w świecie rozwoju rzucamy wyjątek.

W tym konkretnym przypadku wyjątek to NetworkInformationException który jest podniesiony zrobić uprawnień zabezpieczeń zaniedbując wezwanie do GetTcpTable. Dlatego powoduje komunikat o odmowie dostępu.

tl; dr

Dodaj domyślnego portu do web.config AppSettings sekcja:

<appSettings> 
    <add key="Raven/Port" value="*"/> <!-- Add real tcp port # --> 
    <add key="Raven/DataDir" value="~\Data"/> 
    <add key="Raven/AnonymousAccess" value="Get" /> 
</appSettings> 
+0

Czy platforma Azure umożliwia korzystanie z dowolnego portu? Czy są jakieś sztuczki, o których powinniśmy wiedzieć przed rozdaniem? –

+2

Właśnie wybrał losowo port i działa do okrzyki uczta! –

+0

Stosuje się tu wszystkie standardowe porty systemu Windows, nie ma żadnych dodatkowych zarezerwowanych portów w witrynach Windows Azure. –