SSL WCF サービスに Windows Phone 7 エミュレーターで接続する

原文の記事の投稿日: 2011 年 6 月 19 日 (日曜日)

最近行った Windows Phone 7 アプリケーションが WCF エンドポイントに接続できない原因の追及は、非常に興味深いものでした。標準的な WinForm クライアント アプリケーションを使用して徹底的なテストを行ってもすべては正常に動作していましたが、WP7 エミュレーターから同じエンドポイントに接続しようとすると、必ず "リッスンしているエンドポイントがありません" というメッセージのうっとうしいエラーが発生しました。内部例外を調べてみるとわかりますが、これは 404 不明応答のようなものです。もちろんこれはまったく馬鹿げたことで、エンドポイントは存在していました。この問題を解決することで、2 つのことを学びました。

  1. このエラーの本当の意味は、Phone エミュレーターの信頼できる証明書の一覧に、SSL 証明書のルート証明機関がないというものでした。残念なことに、WP7 1.1 (つまり Mango SDK) であっても、これを簡単に行う方法はないようです。実際に行う必要があるのは、ルート CA の .cer ファイルを zip ファイルに格納し、それをダウンロードできる Web サイトに置くことです。ローカルな開発用サーバーでもよく、HotMail などで電子メールを送信できます。エミュレーター内からそのファイルにアクセスすると、ファイルがダウンロードされて、zip ファイルの内容が表示されます。.cer ファイルをクリックすると、自動インストールのオプションが表示されます。これを選択すると、信頼できる証明機関の一覧に格納され、無事に設定が完了します。または、そのように見えます... (次の項を参照)。
  2. 1. で説明した手順は問題なく動作します ... エミュレーターを停止して再起動するまでは。永続的な状態がないらしいため、エミュレーターを停止するたびに (または、自動的に停止したり、Visual Studio から切断することもよくあります)、手順 1. を最初から繰り返す必要があります。毎回です。これは苦痛です。この問題が現在修正対象になっているかどうかはわかりませんが、やがてはそうなることでしょう。

これはローカライズされたブログ投稿です。原文の記事は、「Connecting to an SSL WCF Service with Windows Phone 7 Emulator」をご覧ください。