2012-04-28 78 views
1

大约3个月,我有一个使用WebClient调用某些HTTPS API的公共应用程序。 直到大约3个星期前,一切正常,但突然间,应用程序停止工作,所有WebClient调用都抛出“远程服务器返回错误:NotFound。”例外。使用WebClient调用HTTPS URL的例外

我没有以任何方式更新我的应用程序,API没有更改,我没有注意到Windows Phone的任何更新。 我提到我的应用程序是针对Windows Phone OS 7.1,我也尝试使用HttpWebRequest类 - 结果是一样的。 我的代码看起来是这样的:

private void tile_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
    { 
     WebClient wc = new WebClient(); 
     wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);    

     wc.OpenReadAsync(new Uri("https://www.google.com")); 
    } 

    void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
    { 
     try { 
      StreamReader s = new StreamReader(e.Result); 
      string r = s.ReadToEnd(); 
      MessageBox.Show(r); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

该代码会在每次它被称为与上述异常时失败。如果我尝试获取“http://www.google.com”或任何其他HTTP网址,则代码将正常工作。 但是,我需要使用HTTPS,因为我需要通过WebClient调用发送证书。

我在互联网上发现,去年其他人遇到过这样的问题,但是这个问题应该在芒果更新中解决。

有没有人知道如何解决这个问题或任何解决方法,因为我用尽了想法。

预先感谢您!

问候, 安德烈

回答

0

首先NOTFOUND错误是一般性一个,让你需要使用诸如Fiddler工具中遇到的具体问题(与模拟器:http://blogs.msdn.com/b/fiddler/archive/2010/10/15/fiddler-and-the-windows-phone-emulator.aspx /与设备:http://blogs.msdn.com/b/fiddler/archive/2011/01/09/debugging-windows-phone-7-device-traffic-with-fiddler.aspx

现在也许这是SSL证书的问题?如果您使用桌面浏览器访问相同的网址,您是否会收到关于其有效性的警告/错误?如果是的话,你运气不好,因为我认为你可以重写Windows Phone上的证书验证,就像桌面上的fwk一样。

但是首先尝试用Fiddler进行调试以获取一些细节。

+0

我用户Fiddler(Wireshark)以及我注意到它建立了一个连接,但实际的请求不是从设备发送的。这非常奇怪,因为相同的代码在大约2个月内工作正常并且突然停止工作(对于我和我的应用的其他用户) - 这没有任何改变。 – AndreiC 2012-04-29 10:38:17

+0

您是否安装了Fiddler SSL证书?您看到的请求是HTTP握手而非实际的HTTPS请求。在设备/模拟器上,打开浏览器并访问http:// computername:8888 /并单击“安装证书”链接。之后,你应该能够得到细节。 – MatthieuGD 2012-04-29 17:18:31

+0

嗨,对于我的回复延迟抱歉。我在模拟器上安装了Fiddler证书,并且对https://google.com的呼叫开始工作。然而,在我的公共应用程序中对Delicious API的调用仍然失败,并显示相同的消息... – AndreiC 2012-05-02 13:51:28