Silverlight – > WCF – >数据库 – >问题

我有一些调用WCF服务的silverlight代码,然后使用entity framework访问数据库并返回记录。

一切运行正常,但……当我用经典的ADO.NET代码替换entity framework代码时,我收到一个错误:

远程服务器返回错误:NotFound

当我使用unit testing直接调用ADO.NET代码时,它会返回正确的记录,因此它不是ADO.NEt代码的问题。

我使用了fiddler,它似乎说服务找不到“500”错误。

我不认为这与服务有任何关系,因为我唯一改变的是访问数据库的技术。

谁知道我在这里缺少什么?

‘NotFound’是一个通用的错误消息,可能意味着什么。 如果您对未更改服务接口绝对肯定,则可能的候选者是您的服务中引发的exception。 您确定包含您尝试返回的数据的集合类型没有更改,即从List< OfSomthing>List< OfSomethingElse>吗?

无论如何,我发现用于跟踪此类问题非常宝贵的是Microsoft的Service Trace Viewer工具。 在这里阅读所有相关内容,只需对web.config进行一些简单的更改即可启用日志记录。

John Papa 在Silverlight 3中的MSDN杂志数据性能和故障策略中有一篇很棒的文章解释了这个问题,并提供了一个解决方案。 由于浏览器的限制,错误代码500未正确路由。 对于所有Silverlight 500响应,他的解决方案将传出的HttpResponse消息修改回200。

如果您仍然卡住,您可能想尝试从托管服务的计算机拨打服务。 默认情况下,IIS会返回有关当呼叫来自本地计算机时可能出错的更多信息。 (我相信这可以改变,但不确定。)

尝试添加

 HttpWebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp); 

到Silverlight应用程序的应用程序启动事件。

它应该给你详细的真实错误而不是NotFound。 就我而言,我错过了针对跨域请求而获得的clientaccesspolicy.xml。

如何:指定浏览器或客户端HTTP处理