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

时间:2010-01-20 01:41:56

标签: c# .net wcf silverlight

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

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

  

远程服务器返回错误:NotFound

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

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

我认为这与服务无关,因为我唯一要改变的是访问数据库的技术。

任何人都知道我在这里缺少什么?

4 个答案:

答案 0 :(得分:0)

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

在任何情况下,我发现用于跟踪此类问题的宝贵资源是Microsoft的Service Trace Viewer工具。阅读所有相关内容right here,只需对web.config进行一些简单的更改即可启用日志记录。

答案 1 :(得分:0)

John Papa有一篇来自MSDN杂志Data Performance and Fault Strategies in Silverlight 3的精彩文章解释了这个问题,并提供了一个解决方案。由于浏览器的限制,错误代码500未正确路由。对于所有Silverlight 500响应,他的解决方案将传出的HttpResponse消息修改回200.

答案 2 :(得分:0)

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

答案 3 :(得分:0)

尝试添加

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

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

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

How to: Specify Browser or Client HTTP Handling