尝试使用 WebClient 从 HTTPS 服务器下载文件时,我的应用程序出现 NotFound 错误。它只发生在某些设备(例如诺基亚 810)上,但相同的应用程序在其他设备(例如诺基亚 910)和 WP 模拟器上运行良好。当我在 PC 上的浏览器中输入相同的 URL 时,它也能正常工作。
这是一个演示问题的基本构建应用程序。
private void Button_Click(object sender, RoutedEventArgs e)
{
string URL = "https://MyDomain.com/MyFile.txt";
WebClient WC = new WebClient();
WC.DownloadStringCompleted += WC_DownloadStringCompleted;
WC.DownloadStringAsync(new Uri(URL));
}
void WC_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
txtResult.Text = e.Result;
else
txtResult.Text = "ERROR:\r\n" + e.Error.Message + "\r\n" + e.Error.StackTrace;
}
不幸的是,服务器不在我的控制范围内,但它确实有一个完整的证书(由 Thawte 签名),所以这不是自签名证书的问题。
我已经在 WP7.1 和 WP8 上尝试过这个测试应用程序,但它在相同的设备上一直失败。
这是一款供公众使用的应用程序,因此无法在手机或任何其他手机配置设置上安装证书。
我已经设法解决了这个问题,但解决方案并不是代码的直接问题。
我们一些心爱的测试人员将设备上的日期提前一年,以测试对应用程序帐户状态的更改,而不是重置回正确的日期。这当然会导致设备将到期日期为 2014 年 2 月的证书标记为无效,从而导致 HTTPS 调用失败。
我是一名优秀的程序员,十分优秀!