原文发布于 2011 年 6 月 19 日(星期日)

前段时间,我在尝试查明我的 Windows Phone 7 应用程序无法连接到 WCF 终结点的原因时,获得了很多乐趣。我对标准 Winforms 客户端应用程序进行了彻底的检验,结果一切正常,但只要我尝试从我的 WP7 仿真器点击同一终结点,就会收到烦人的错误,如“无终结点侦听”。如果您查看内部异常,就会看到诸如“404 找不到响应”这样的异常。当然,这样做很可笑,终结点已在那里。我在解决此问题的过程中明白了以下两点:

  1. 该错误实际上意味着,手机仿真器的受信任证书列表中没有 SSL 证书的根证书颁发机构。不幸的是,即使对于 WP7 1.1(即 Mango SDK),好像也无法轻松做到这一点。您实际需要做的是将根 CA .cer 文件放入一个压缩文件中,然后将该压缩文件放到一个可进行下载的网站上。该网站可以是一个本地开发服务器,您可以通过 HotMail 等邮箱以电子邮件的方式将该文件发送给自己。从仿真器内导航到该压缩文件,仿真器将下载该压缩文件并向您显示其内容。如果您单击 .cer 文件,则仿真器将提议为您安装此文件。接受此提议后,仿真器会将该文件放在受信任证书颁发机构列表中,这样您便能顺利操作了。或者,可能看起来…(请参阅下一点)
  2. 我在 #1 中所述的步骤很有效…直到您停止并重新启动仿真器为止。此状态并不持久,当您停止仿真器(或者仿真器多次自行停止和/或从 Visual Studio 断开)时就会体现这一点,您必须重复步骤 1。每次都是这样,真是令人头疼啊。无法确定问题是否出在定位雷达上,但我想我们会知道的。

这是一篇本地化的博客文章。请访问 Connecting to an SSL WCF Service with Windows Phone 7 Emulator 以查看原文