Ошибка "Коллекция сервера не может быть пустой" при использовании кэширования Azure AppFabric в приложении Winforms

Исходная статья опубликована в четверг, 27 октября 2011 г.

У меня была проблема, с которой, к сожалению, сталкивается немало людей при использовании функции кэширования AppFabric в Windows Azure. Это версия механизма кэширования, который прежде назывался Velocity. При возникновении проблемы с используемой им фабрикой кэширования чаще всего в сообщении об ошибке будут присутствовать слова "Коллекция сервера не может быть пустой". К сожалению, это еще одна повсеместная ошибка, которую достаточно трудно отследить. В моем случае она оказалась еще сложнее: у меня была скомпилированная автономная сборка, которая использовала кэш. Когда я вызывал эту сборку из рабочей роли Azure, никаких проблем не было. Однако, когда я добавлял ссылку на сборку в тестовом приложение Winforms и пытался его запустить, у меня появлялась эта мерзкая ошибка.

После изрядного числа попыток установить ее причину, пучка седых волос и копания в себе (зачем я здесь, зачем я всем этим занимаюсь) я наконец догадался. Хотя мое приложение winform не вызывало классы кэширования напрямую, оно было хост-процессом. Это значит, что все точки входа в конфигурации кэширования, имевшиеся в моем приложении рабочей роли, нужно было добавить в файл app.config моего приложения Winforms. После добавления все прекрасно заработало.

Я думаю, это достаточно распространенный сценарий, но поскольку эту ошибку довольно сложно отследить, я решил рассказать о ней здесь, чтобы помочь тем, кто с ней столкнется.

Это локализованная запись блога. Исходная статья находится по адресу: Server Collection Cannot Be Empty Error When Using Azure AppFabric Caching in Winforms Application