我有一些调用WCF服务的silverlight代码,然后使用实体框架访问数据库并返回记录。
一切运行正常,但......当我用经典的ADO.NET代码替换Entity Framework代码时,我收到一个错误:
远程服务器返回错误:NotFound
当我直接使用单元测试调用ADO.NET代码时,它会返回正确的记录,因此它不是ADO.NEt代码的问题
我使用了fiddler,似乎说服务找不到“500”错误。
我认为这与服务无关,因为我唯一要改变的是访问数据库的技术。
任何人都知道我在这里缺少什么?
答案 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。