Подключение к службе SSL WCF с помощью эмулятора Windows Phone 7

Дата публикации исходной статьи: воскресенье, 19 июня 2011 г.

Недавно мне пришлось затратить немало усилий и времени, чтобы определить, почему мое приложение Windows Phone 7 не может подключиться к конечной точке WCF.  Я провел тщательное тестирование со стандартным клиентским приложением Winforms — и все работало отлично. Но когда я пытался достичь той же конечной точки из эмулятора WP7, я все время получал сообщение об ошибке "конечная точка не прослушивается", а внутреннее исключение выдавало что-то вроде ошибки с кодом 404 "не найдено".  Конечно, это было совершенно нелепо — конечная точка существовала.  Решая эту проблему, я выяснил две вещи:

  1. Ошибка на самом деле означает, что в списке доверенных центров сертификации эмулятора телефона нет корневого центра сертификации для сертификата SSL.  К сожалению, даже в версии WP7 1.1 (т. е. Mango SDK) не появился простой способ его создания.  Чтобы обойти эту проблему, нужно поместить CER-файл корневого центра сертификации в ZIP-файл и разместить этот файл на веб-сайте, с которого его можно загрузить.  Это может быть локальный сервер разработки, либо вы можете отправить файл на свой адрес электронной почты, например на адрес в службе типа HotMail.  Перейдите к этому ZIP-файлу из эмулятора, чтобы он загрузил файл и показал его содержимое.  Если щелкнуть CER-файл, эмулятор предложит установить его.  После установки содержимое будет помещено в список доверенных центров сертификации и проблема будет решена.  По крайней мере, так может показаться... (см. далее)
  2. Действия, которые я описал в пункте 1, дают отличный результат... пока вы не остановите и не перезапустите эмулятор.  Похоже, эмулятор не сохраняет состояние, поэтому после каждой остановки (или после многочисленных самостоятельных остановок и/или отключений эмулятора от Visual Studio) вам придется повторять все действия пункта 1 заново.  И так каждый раз.  Адская мука.  Не уверен, что об этой проблеме известно разработчикам, но думаю, что мы увидим ее решение.

Это локализованная запись блога. Исходная статья доступна по адресу Connecting to an SSL WCF Service with Windows Phone 7 Emulator