Erreur « La collection de serveurs ne peut pas être vide » lorsque vous utilisez la mise en cache AppFabric d’Azure dans une application Winforms

Article original publié le jeudi 27 octobre 2011

J’ai eu un problème qui a malheureusement été partagé par d’autres qui ont utilisé la fonctionnalité de mise en cache AppFabric de Windows Azure. Il s’agit de la version commerciale du mécanisme de mise en cache précédemment connu sous l’appellation de Velocity. Lorsque vous avez un problème avec la fabrique de mise en cache qu’il utilise, le plus souvent le message d’erreur que vous verrez apparaître dira à peu près « la collection de serveurs ne peut pas être vide ». Il s’agit malheureusement d’une de ces erreurs omniprésentes dont il est souvent assez difficile de remonter à la source. Dans ce cas, c’était encore plus déroutant – J’avais un assembly autonome compilé qui faisait usage du cache. Lorsque j’ai appelé cet assembly depuis un rôle de travail Azure, je n’ai reçu aucune erreur. Toutefois, lorsque j’ai ajouté une référence à l’assembly dans mon application de test winforms et essayé de l’exécuter, j’ai eu l’erreur redoutée.

Après pas mal de bricolage, d’arrachage de cheveux et d’intense réflexion (qui suis-je, où vais-je, pourquoi est-ce que je travaille sur ce truc), j’ai fini par comprendre. Même si mon application winform n’appelait pas directement les classes de mise en cache, c’était le processus hôte. Ce que cela signifie est que toutes les entrées de la configuration du cache qui se trouvaient dans mon application de rôle de travail, devaient être ajoutées dans le app.config de mon application winforms. Dès que je les ai ajoutées, tout a fonctionné parfaitement.

Ce type de scénario est relativement courant, mais cette erreur est tellement pénible à identifier que j’ai pensé qu’il serait utile de la capturer ici pour qu’elle n’embête plus personne.

Ce billet de blog a été traduit de l’anglais. Vous trouverez la version originale de l’article sur Server Collection Cannot Be Empty Error When Using Azure AppFabric Caching in Winforms Application