Connexion à un service WCF SSL avec l’émulateur Windows Phone 7

Article d’origine publié le dimanche 19 juin 2011

Je me suis bien amusé il y a quelque temps à essayer de comprendre pourquoi mon application Windows Phone 7 n’arrivait pas à se connecter à mon point de terminaison WCF. J’ai effectué des tests approfondis avec une application cliente WinForms standard et tout fonctionnait parfaitement, mais chaque fois que j’essayais d’atteindre le même point de terminaison depuis mon émulateur WP7, j’obtenais une erreur agaçante accompagnant les lignes « no endpoint listening » (aucun point de terminaison à l’écoute) et en regardant l’exception interne, un message du genre « 404 not found response » (réponse introuvable). C’était bien sûr complètement ridicule, puisque le point de terminaison était présent. J’ai appris deux choses lors de la résolution de ce problème :

  1. L’erreur signifiait en fait que l’émulateur de téléphone ne possédait pas l’autorité de certification racine pour le certificat SSL dans sa liste de certificats approuvés. Malheureusement, même avec WP7 1.1 (c.-à-d. Mango SDK), cela ne semple toujours pas facile à réaliser. Pour effectuer cela, il vous faut en fait placer le fichier certificat .cer de l’autorité de certification racine dans un fichier zip quelque part, puis placer celui-ci sur un site Web où vous pouvez le télécharger. Il peut s’agir d’un serveur de développement local ou vous pouvez vous l’envoyer à vous-même par messagerie électronique comme HotMail. Accédez à ce fichier à partir de l’émulateur qui va le télécharger puis vous afficher le contenu du fichier zip. Si vous cliquez sur le fichier .cer, il vous proposera de l’installer. Acceptez cette offre et ce fichier sera placé dans la liste des autorités de certification approuvées, et vous pourrez continuer. Ou tout au moins, à ce qu’il semble... (voir la suite)
  2. Les étapes que j’ai décrites en premier lieu fonctionnent bien... jusqu’à ce que vous arrêtiez et redémarriez l’émulateur. Il semble que son état ne soit pas persistant, alors chaque fois que vous l’arrêtez (ou les nombreuses fois où il s’arrête de lui-même et/ou se déconnecte de Visual Studio), vous devez répéter la procédure 1 entièrement. À chaque fois ! Sacrément laborieux ! Je ne sais pas si ce problème fait partie des correctifs prévus, mais je l’espère.

Ce billet de blog a été traduit de l’anglais. Vous trouverez la version originale ici : Connecting to an SSL WCF Service with Windows Phone 7 Emulator