AppFabric Cache - существующее соединение было принудительно закрыто удаленным хостом - PullRequest
7 голосов
/ 14 мая 2010

Я пытаюсь запустить кэш AppFabric в моей локальной среде разработки. У меня установлена ​​ Windows Server AppFabric Beta 2 Refresh , и кластер кэша и хост настроены и запущены в Windows 7 64-битной версии. Я запускаю свой веб-сайт MVC2 на локальном веб-сайте IIS в пуле приложений v4.0 в интегрированном режиме.

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

Мой web.config настроен со следующим:

  <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>

Я получаю сообщение об ошибке при попытке инициализировать DataCacheFactory:

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

Я получаю желтый экран ошибки ASP.NET со следующим:

Существующее соединение было принудительно закрыто удаленным хостом

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.Net.Sockets.SocketException: существующее соединение было принудительно закрыто удаленным хостом

Ошибка источника:

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

Ответы [ 3 ]

14 голосов
/ 26 мая 2010

У меня тоже была похожая проблема, и моя проблема была в том, что я не дал надлежащие разрешения клиенту кеша. Чтобы быстро убедиться, что это проблема, я бы предоставил всем учетным записям доступ к кешу. Если это решит проблему, тогда посмотрите на ограничение доступа к соответствующей учетной записи, а не всем. Это можно выполнить, выполнив следующую команду через «Кэширующий администратор Windows PowerShell», который находится в папке «Пуск» Windows Server AppFabric:

Grant-CacheAllowedClientAccount everyone
2 голосов
/ 26 сентября 2013

У меня тоже была эта проблема, и я нашел ответ в этой теме:

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

Ответ:

Вы видите эту ошибку из-за несоответствия свойств безопасности между клиентом и сервером.

В своем клиентском коде вы отключили защиту (Mode = None and PotectionLevel = Нет), тогда как сервер кэширования использует режим = Транспорт и PotectionLevel = EncryptAndSign (по умолчанию в битах Beta2Fresh).

Выполните одно из следующих действий:

1) В коде клиента используйте безопасность по умолчанию, т.е. configuration.SecurityProperties = new DataCacheSecurity ();

2) Отключите защиту на сервере, чтобы она соответствовала вашему существующему клиенту код. Использовать командлет Powershell Set-CacheClusterSecurity -SecurityMode Нет -ЗащитаУровень Нет

1 голос
/ 14 мая 2010

У вас возникает та же проблема, если вы используете объект DataCacheFactoryConfiguration? например,

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();
    ...
}

Вы открыли порт на брандмауэре?

Возможно, проверьте записи в ваших журналах событий - они могут предложить подсказки относительно того, что происходит (или не происходит).

...