Silverlight,WCF和NotFound,哦,我的

时间:2010-11-23 11:08:44

标签: silverlight wcf

我知道这是StackOverflow上的热门话题,但请耐心等待。

我们有一个与WCF服务对话的Silverlight 3应用程序。不时地,对WCF服务的调用返回NotFound异常。

我已经阅读了SO和Google关于这个主题的每篇文章,但我无法弄清楚出了什么问题。以下是我的一些发现:

  • 异常发生在随机调用和随机时刻。有时候一个方法会工作50次并突然出现问题。我觉得它与超时有关,因为如果我在调用一个调用之前让应用程序空闲了一段时间它是最可重现的,但情况并非总是如此 - 有时候应用程序中的第一个调用之一会失败。
  • 我们使用SilverlightFaultBehavior将HTTP错误代码转换为200,我们有很多实例,在服务器端抛出异常实际上会冒泡到客户端,所以我可以确认这应该按预期工作。
  • Fiddler在发生异常时没有显示任何特殊内容。我甚至没有看到有问题的电话。这让我很担心,但这可能意味着异常是几分钟前发生的电话和超时的结果?
  • 服务跟踪查看器不显示任何内容。
  • 我将Visual Studio附加到Silverlight项目和WCF服务项目,设置调试以中断所有异常(抛出或处理)并且它不会中断(除非在Silverlight中告诉我NotFound问题)。这让我觉得NotFound可能不响应WCF服务端的异常?

我真的不知道从哪里开始。任何帮助,欢迎任何指针或想法尝试。

3 个答案:

答案 0 :(得分:1)

以下是您提到的观点的一些想法:

1)异常发生在随机调用和随机时刻 - 确保作为方法返回值发送的数据有效。我有一个案例,当发送一个带有一些空属性的对象导致序列化失败时。我发现这是使用IIS日志/服务跟踪日志。

2)那么,你找到了什么有用的东西吗?

3)我不认为提琴手可以帮助解决这种错误。

4)你确定吗?您是否正确设置了跟踪日志?

5)您将找不到任何可以帮助您的例外情况。在从服务器端包装消息/数据或在客户端解包消息/数据时,会引发实际异常(当您看到“未找到”错误时)。

因此,总结一下,确保数据格式正确(可能看起来对你来说不对,但不是WCF,只是用一段时间玩不同的值)并再次验证Trace Logging。

答案 1 :(得分:1)

该服务的约束力是什么?托管在哪里:IIS或VS部署服务器? 我最近看到过这个问题,IIS出了问题。它甚至无法打开* .svc文件。 所以这是一个活动计划:

  1. 尝试使用http://localhost/MyApp/MyService.svc
  2. 等http地址打开svc文件
  3. 如果打开,请编写控制台应用程序并测试服务。
  4. 如果有效,请编写一个简单的Silverlight应用程序。
  5. 我希望这会有所帮助。

答案 2 :(得分:0)

我通过添加

来解决这个问题
minFreeMemoryPercentageToActivateService="1" 

到Web.config。默认情况下是

minFreeMemoryPercentageToActivateService="5"

有时会导致此错误。