AppFabric Cache - Una conexión existente forzosamente fue cerrada por el host remoto
-
26-09-2019 - |
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: }
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:
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