2010-11-05 88 views
4

我正在构建一个wp7应用程序。我使用WebClient从服务器获取数据。过去,它一直在工作,尽管突然间它失败了。WebClient失败,远程服务器“NotFound”

static void downloadData(string uri, Action<object, DownloadStringCompletedEventArgs> onComplete) 
    { 
     Debug.WriteLine("Downloading: " + uri); 
     WebClient data = new WebClient(); 
     data.DownloadStringCompleted += new DownloadStringCompletedEventHandler(onComplete); 
     data.DownloadStringAsync(new Uri(uri)); 
    } 

    static void data_SectionDownloadCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     if (e.Error != null) 
     { 
      // throws NotFound 
      throw e.Error; 
     } 

     // ... 
    } 

当我在浏览器中访问有问题的URI时,它工作正常。

例外:

"The remote server returned an error: NotFound." {System.Net.WebException} 

我在做什么错在这里?

更新:我重新启动了模拟器,现在它工作正常。奇怪的。也许这是模拟器中的问题?希望我不能在实际的设备上重现它。

+0

我开始与我的Azure存储模拟器一个blob文件中获取此。我确定我将容器设置为“公开”,但我一直收到WebClient NotFound错误。我可以通过Internet Explorer访问azure blob。 – markti 2012-09-07 01:36:04

回答

0

我有类似的模拟器经验。在测试任何使用网络的应用程序之前,我经常打开Internet Explorer并浏览网站。另外,最好不要更改运行仿真器的机器的IP地址,DHCP或手动。最后,我建议您处理任何错误情况,并在MessageBox中显示一条错误消息。

HTH,indyfromoz

0

我也有这个偶尔。即使在真实的设备上。重试通常会修复它。

不幸的是,这是您需要了解和编写代码以适应在偶尔连接的环境中工作的问题之一。

1

NotFound是一个通用的错误,基本上意味着'错误'。背后有一个真正的例外,你需要挖掘发现。我找到的最简单的方法是Intellitrace,它允许您查看您的Web服务器上发生的每个异常。如果您在NotFound之前查看,您会发现支持它的真正例外。

如果Intellitrace不是一个选项,请在您的服务器和客户端上添加更多/更好的日志记录。谷歌有许多技巧,更深入调试一个很好的例子:

http://www.mostlydevelopers.com/blog/post/2009/01/14/debugging-tips-ndash3b-the-remote-server-returned-an-error-notfound.aspx

相关问题