我正在使用Silverlight 5中的应用程序。我们使用WCF进行所有网络通信,并且它大多运行良好。但是,我们有几个虚拟机用于测试应用程序失败的位置,尝试重启自身,失败等等。我已经添加了很多跟踪代码,以及大量的尝试捕获,我将它一直隔离到失败的代码行,但我仍然无法从失败中获得实际的错误消息,只是碰撞。最初,它在这一行WCF代码上失败了:
return await Task<List<Instance>.Factory.FromAsync(Channel.BeginGetInstance, Channel.EndGetInstance, null);
如果它与使用async / await有关,我回到我们的旧代码回调。我仍然得到同样的失败,但现在我可以看到对WCF函数的调用成功完成,但回调的第一行上的日志语句从未发生过,因此它似乎在回调之前或之外死亡。
另外请注意,我们在Application_UnhandledException中的代码似乎没有触发,但Application_Exit中的代码确实运行,我将其视为日志文件中的最后一行。
我尝试设置远程调试,但在崩溃和回收之前我无法连接到应用程序,所以这也无济于事。
我还使用TCPView来观察网络流量,看起来两个方向都在进行通信。
如果有人有任何其他建议,我会非常感激。
答案 0 :(得分:0)
在最终意识到我的问题之前,我花了10天的时间追逐我的尾巴。错误记录代码中存在错误。它产生了一个错误,我只是没有看到它。一旦我意识到并收到错误消息,实际的底层错误在大约5分钟内得到修复。但是,好的教训是,永远不要假设底层代码是有效的,无论它多么简单。