Pregunta

Estoy intentando conseguir caché de AppFabric en marcha y funcionando en mi entorno de desarrollo local. Tengo Windows Server AppFabric Beta 2 Refresh instalado, y el clúster de caché y anfitrión configurado e iniciado ejecuta en Windows 7 de 64 bits. Estoy corriendo mi página web MVC2 en un sitio web local de IIS bajo un grupo de aplicación v4.0 en el modo integrado.

HostName : CachePort      Service Name            Service Status Version Info
--------------------      ------------            -------------- ------------
SN-3TQHQL1:22233          AppFabricCachingService UP             1 [1,1][1,1]

Tengo mi web.config configurado con la siguiente:

  <configSections>
        <section name="dataCacheClient" type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" allowLocation="true" allowDefinition="Everywhere"/>
   </configSections>

   <dataCacheClient>
       <hosts>
           <host name="SN-3TQHQL1" cachePort="22233" />
       </hosts>
   </dataCacheClient>

Recibo un error cuando intento inicializar el DataCacheFactory:

    protected CacheService()
    {
        _cacheFactory = new DataCacheFactory(); <-- Error here
        _defaultCache = _cacheFactory.GetDefaultCache();
    }

Me estoy poniendo la pantalla de error de color amarillo ASP.NET con lo siguiente:

Una conexión existente forzosamente fue cerrada por el host remoto

Descripción: Excepción no controlada durante la ejecución de la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de excepciones: System.Net.Sockets.SocketException: Una conexión existente forzosamente fue cerrada por el host remoto

Fuente de error:

Line 21:         protected CacheService()
Line 22:         {
Line 23:             _cacheFactory = new DataCacheFactory();
Line 24:             _defaultCache = _cacheFactory.GetDefaultCache();
Line 25:         }
¿Fue útil?

Solución

Yo tenía un problema similar también, y mi problema era que no había dado los permisos adecuados para el cliente de caché. Con el fin de verificar rápidamente este es el tema me conceda el acceso a la cuenta a todos a la caché. Si esto soluciona el problema, entonces mirar a limitar el acceso a la cuenta apropiada en lugar de todo el mundo. Esto puede hacerse ejecutando el siguiente comando a través de la "Almacenamiento en caché de administrador de Windows PowerShell", que se encuentra en la carpeta de menú de inicio de Windows Server AppFabric:

Grant-CacheAllowedClientAccount everyone

Otros consejos

Yo tenía este problema también y me encontró la respuesta en este tema:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/c27063e7-1579-4d62-9104-87076d1c8d98/client-caching-error-errorcodeerrca0017substatuses0006

La respuesta:

  

Se están viendo este error debido a la falta de coincidencia propiedad de seguridad   entre el cliente y el servidor.

     

En su código de cliente ha desactivado la seguridad (Modo = None y   PotectionLevel = None) mientras que el modo utiliza el servidor de caché = Transporte y   PotectionLevel = EncryptAndSign (por defecto en bits Beta2Fresh).

     

Realice una de las siguientes:

     

1) En el código de cliente utilice la seguridad predeterminada es decir,   configuration.SecurityProperties = nuevo DataCacheSecurity ();

     

2) Desactivar la seguridad en el servidor para que coincida con su cliente existente   código. El uso de PowerShell cmdlet Set-CacheClusterSecurity -SecurityMode   Ninguno Ninguno -ProtectionLevel

¿Usted consigue el mismo problema si se utiliza un objeto DataCacheFactoryConfiguration? por ejemplo.

protected CacheService()
{
    DataCacheFactoryConfiguration config;
    List<DataCacheServerEndpoint> endpoints;
    DataCacheFactory factory;
    DataCache cache;

    endpoints = new List<DataCacheServerEndpoint>();
    endpoints.Add(new DataCacheServerEndpoint("SN-3TQHQL1",22233));

    config = new DataCacheFactoryConfiguration();
    config.Servers = endpoints;

    factory = new DataCacheFactory(config);

    cache = factory.GetDefaultCache();
    ...
}

¿Se ha abierto el puerto en el servidor de seguridad?

Tal vez comprobar las entradas en los registros de eventos -. Que pueden ofrecer pistas sobre lo que es (o no es) pasando

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top