2011-06-14 35 views
0

我正在Silverlight网站上工作,这需要我从XML文件读取。该文件位于服务器端。用户不能选择他们自己的文件之一。未执行Silverlight Asnyc方法

Silverlight无法读取自己文件夹中的文件。只有通过OpenFileDialog,Silverlight才能读取文件,但这个文件是由用户上传并被认为是一个流。正如我之前所说,我需要读取的文件没有上传,但与XAP文件驻留在相同的映射中。这里是我的VS2010的解决方案资源管理器的截图:

enter image description here

所以,你可以看到,该文件包含。请注意:这不是要成为成品,而是我正在努力更好地了解Silverlight。

我得到了我从这个博客使用的代码:http://blogs.silverlight.net/blogs/msnow/archive/2009/02/10/silverlight-tip-of-the-day-93-reading-xml-with-silverlight.aspx

我粘贴整个类在引擎收录页面,这是一个有点多在这里贴(但不要太多,给它一个阅读:P):http://pastebin.com/eEMGGxsB

连接到DownloadStringCompleted EventHandler的方法从不执行。调试器也不会进入它。

有谁能告诉我这是怎么回事吗?

回答

0

正在调用DownloadStringAsync的代码看起来很合理。只要你有这样的问题,第一个停靠港就是Fiddler。用它来确定客户端实际与服务器进行的对话。

我在完成的事件的代码中看到的一个立即失败是在测试e.Error是否有值之前访问e.Result。当Error包含异常时访问Result将导致该异常被抛出。因此,在你的代码中,如果你没有把你的断点放在事件处理程序的顶部,那么如果下载出现问题,它永远不会被达到。

代码的另一个问题是您的displaySnippet方法在完成的事件之前运行,因此将试图访问尚未填充的codeList。不要忘记这是异步代码,您需要在完成的例程结束时执行displaySnippet

+0

关于在e.Error之前访问的e.Result:我这样做的目的是为了看看我分配它的变量在应该发生该函数后是否仍为NULL。这是在一些初始测试后添加的。至于第二个问题:我不知道如何设置我的代码来等待异步函数完成。 – KdgDev 2011-06-14 19:23:49

+0

@WebDevHobo:在完成的代码而不是在构造函数中调用它呢?因此,您的第一步是安装fiddler并检查客户端和服务器之间实际发生的事情。我看不出有什么理由为什么完成不会开火。 – AnthonyWJones 2011-06-14 19:29:49