Silverlight 2 Webservices

时间:2009-08-19 09:14:52

标签: silverlight web-services exception

我正在开发一个使用web服务的silverlight应用程序。对此Web服务的调用是异步的。但是当在异步调用的过程中发生异常时,我在完成的事件上收到错误但我丢失了原始异常信息。独立于原始异常,我总是得到“远程服务器返回错误:NotFound”,堆栈指向“外部”代码。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

当服务抛出异常时,它会转换为40(x)HTTP响应,在Silverlight插件可以处理之前由浏览器处理。为避免这种情况,请将您的WCF调用包装在try / catch块中,并通过可由Silverlight处理的HTTP响应(例如200)将异常数据发送回客户端。以下是codeproject上此策略的一个非常好的实现: http://www.codeproject.com/KB/silverlight/SilverlightExceptions.aspx

答案 1 :(得分:0)

在SL到WCF的任何异常中都会发生这种情况,有时您可以在传输的数据中找到Fiddler2的内部异常,或者您可能会看到HTTP错误代码,它可以提供一些提示,有时则更难找到。这是我对SL 4.0的大请求项,更好的WCF调试。

http://www.fiddler2.com

答案 2 :(得分:0)

  1. 按照上面的James Cadd的建议。获取更多信息性错误消息肯定会有所帮助,不幸的是,您不能依赖调试器为您生成它们。

  2. 即使你不是单元测试的忠实粉丝,这也是一个非常值得的地方。构建一组有目的地发送您的Web服务错误数据并确保您收到信息性错误的测试将帮助您了解它为何无法使用Silverlight应用程序。编写这些类型的测试需要采用不同的思维方式,但如果您知道自己已经尝试以各种可能的方式破坏Web服务并且它总是会为您提供可以使用的内容,那么它会让您对代码充满信心。追踪问题。