2012-07-17 31 views
6

Estoy jugando con la nueva función de sitios web en Azure y tratando de ejecutar un sitio MVC con RavenDB en modo incrustado. Todo funciona bien a nivel local sino que ejecuta el sitio desplegado en azul me sale este error:RavenDb en sitios web de Azure - Acceso denegado

System.Net.NetworkInformation.NetworkInformationException: Acceso denegado

Esto sucede cuando se crea la instancia db en global.asax:

Store = EmbeddableDocumentStore { ConnectionStringName = "RavenDb" }; 

Mi cadena de conexión es:

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

Gracias!

+0

¿Cuál es el seguimiento de la pila? –

Respuesta

12

Cuando no se especifica un puerto para RavenDb saldrá e intentará encontrar su propio, se hace llamando IPGlobalProperties.GetActiveTcpListeners().

RavenDb | PortUtil.cs

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

Calling GetActiveTcpListeners() pasante llama a la función Win32 GetTcpTable() que intenta enumerar todas las posibles combinaciones de puertos en el host. Por razones obvias, no sería un buen escenario permitir que la gente haga el escaneo de puertos dentro de los sitios web de Windows Azure. Lo que significa que la operación GetTcpTable falla y cuando algo falla en el mundo del desarrollo lanzamos una excepción.

En este caso particular, la excepción es una NetworkInformationException que se eleva a hacer los permisos de seguridad descuidando la llamada a GetTcpTable. Es por eso que da como resultado un mensaje de Acceso denegado.

tl; dr

agregar un puerto por defecto a su web.config AppSettings sección:

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

¿Azure le permite usar cualquier puerto? ¿Hay algunos trucos que debemos conocer, de antemano? –

+2

¡Acabo de elegir un puerto al azar y funciona un aplauso! –

+0

Todos los puertos estándar de Windows se aplican aquí, no hay puertos reservados adicionales en los sitios web de Windows Azure. –