Коллекция серверов не может быть пустой — Windows Server AppFabric 1.1

Я получаю эту ошибку, когда использую несколько dataCacheClients. Я видел этот вопрос и этот вопрос msdn, но в то время в AppFabric 1.0 несколько dataCacheClients были невозможны. Microsoft добавила эту функцию в AppFabric 1.1 (см. журнал изменений), который я пользуюсь в настоящее время. Любые идеи о том, почему я получаю эту ошибку? Вот мой файл конфигурации:

<configuration>
<configSections>

 <section name="dataCacheClients"
         type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
         allowLocation="true" 
         allowDefinition="Everywhere"/>
</configSections>

<dataCacheClients>
<!--client 1 for caching-->
<dataCacheClient name="dataCacheClient1">
  <localCache isEnabled="false" sync="NotificationBased" objectCount="100000"/>
  <clientNotification pollInterval="5"/>
  <hosts>
    <host name="!2345623ghf1.fg.com" cachePort="22233"/>
  </hosts>
  <securityProperties mode="None" protectionLevel="None" />
  <transportProperties maxBufferPoolSize="2147483647" maxBufferSize="2147483647" channelInitializationTimeout="60000" receiveTimeout="900000"/>
</dataCacheClient>
<!-- client 2 for session -->
<dataCacheClient name="dataCacheClient2">
  <localCache isEnabled="false" sync="NotificationBased" objectCount="100000"/>
  <clientNotification pollInterval="5"/>
  <hosts>
    <host name="!2345623ghf2.fg.com" cachePort="22233"/>
  </hosts>
  <securityProperties mode="None" protectionLevel="None" />
  <transportProperties maxBufferPoolSize="2147483647" maxBufferSize="2147483647" channelInitializationTimeout="60000" receiveTimeout="900000"/>
</dataCacheClient>


</dataCacheClients>


<system.web>
<compilation debug="true" targetFramework="4.0">
</compilation>

<sessionState
  mode="Custom"
  customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <add name="AppFabricCacheSessionStoreProvider"
         type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache"
         cacheName="default"
         dataCacheClientName="dataCacheClient2" />
  </providers>
</sessionState>

ПРИМЕЧАНИЕ:

Я использую DLL из .\Program Files\AppFabric 1.1 for Windows Server

Дополнительные сведения об ошибке:

введите здесь описание изображения


person krishwader    schedule 04.06.2013    source источник


Ответы (2)


Наконец-то я смог заставить его работать. Были некоторые элементарные, но глупые ошибки, которые я совершил. Надеюсь, кто-то с такими же проблемами сможет получить некоторые рекомендации по этому вопросу в моем ответе. Ошибки, которые я совершил / как это было исправлено:


1) Проверьте версию CLR библиотеки DLL

Всегда, я имею в виду, всегда проверяйте версию DLL, которую вы используете для ссылки в клиенте-потребителе. DLL, на которые следует обратить внимание:

  • Microsoft.ApplicationServer.Caching.Core.dll

  • Microsoft.ApplicationServer.Caching.Client.dll

  • Microsoft.WindowsFabric.Common.dll

  • Microsoft.WindowsFabric.Data.Common.dll

  • Microsoft.Web.DistributedCache (это и вызывало у меня проблемы — в мое решение была добавлена ​​более старая версия; нет необходимости ссылаться на нее, достаточно просто иметь эту DLL в той же папке, что и Caching.Core и Caching.Client)

Хороший (или, скорее, безотказный) способ получить последние библиотеки DLL — скачайте и установите Appfabric и получите библиотеки DLL от .\Program Files\AppFabric 1.1, добавьте их в папку внутри вашего проекта и направьте их оттуда.


2) DataCacheFactory должно иметь ссылку на то, на что dataCacheClient ссылается

Точно так же, как AppFabricCacheSessionStoreProvider должен содержать атрибут dataCacheClientName для ссылки на конкретный кластер, помещенный в dataCacheClient, DataCacheFactory init в коде также должен содержать ссылку на dataCacheClient, который позаботится о caching:

DataCacheFactory _factory = new DataCacheFactory(new DataCacheFactoryConfiguration("dataCacheClient1"))

Спасибо всем, кто помог в решении этого вопроса!

person krishwader    schedule 04.06.2013

У меня была эта проблема на одном из наших компьютеров для разработки, и в конечном итоге выяснилось, что это установка Windows Server AppFabric. Моя конфигурация была полностью правильной. Одна и та же конфигурация работала на всех машинах, кроме одной, и как только мы удалили Windows Server AppFabric с этой машины и установили версию Microsoft AppFabric 1.1, проблема была решена.

Я также использую AppFabric для хранения Asp.NET SessionState.

person Jayesh Modha    schedule 19.07.2013