目前我正在构建Silverlight WCF RIA应用程序。它一直进展顺利,客户端可以毫无问题地获得所需的数据。然后我决定向数据库添加一个表,更新相关的实体数据模型EDMX文件,并重新生成相关的域服务类。现在它仍然可以获得它用来获得的所有表,但是当我尝试从新表tblProject获取数据时,我收到了这个错误:
Error
Load operation failed for query 'GetTblProjects'. The remote server returned an error: NotFound.
Error Details
at System.ServiceModel.DomainServices.Client.OperationBase.Complete(Exception error)
at System.ServiceModel.DomainServices.Client.LoadOperation.Complete(Exception error)
at System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad(IAsyncResult asyncResult)
at System.ServiceModel.DomainServices.Client.DomainContext.<>c__DisplayClass1b.<Load>b__17(Object )
Caused by: The remote server returned an error: NotFound.
at System.ServiceModel.DomainServices.Client.WebDomainClient`1.EndQueryCore(IAsyncResult asyncResult)
at System.ServiceModel.DomainServices.Client.DomainClient.EndQuery(IAsyncResult asyncResult)
at System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad(IAsyncResult asyncResult)
Caused by: The remote server returned an error: NotFound.
at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
Caused by: The remote server returned an error: NotFound.
at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassa.<EndGetResponse>b__9(Object sendState)
at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__0(Object sendState)
我花了很多时间查看域服务类,以及XAML代码和相关的视图模型类,并且看不到与tblBasin数据库表相关的实现之间的任何差异没有问题的工作正常和新的tblProject表给我错误。当我打开WCF跟踪时,这是我得到的tblBasin:
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>458758</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2012-04-20T21:54:03.3280726Z" />
<Source Name="System.ServiceModel" />
<Correlation ActivityID="{169c9eeb-338f-4ea5-a93a-34f234113283}" />
<Execution ProcessName="WebDev.WebServer40" ProcessID="5276" ThreadID="14" />
<Channel/>
<Computer>WKSTCAL0123</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/en-CA/library/System.ServiceModel.Security.SecurityImpersonationSuccess.aspx</TraceIdentifier>
<Description>Security Impersonation succeeded at the server.</Description>
<AppDomain>f8f8d82-2-129794323085920534</AppDomain>
<ExtendedData xmlns="http://schemas.microsoft.com/2006/08/ServiceModel/SecurityImpersonationTraceRecord">
<OperationAction>http://tempuri.org/ProjectSetDomainServicebinary/GetTblBasins</OperationAction>
<OperationName>GetTblBasins</OperationName>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
以下是我失败的tblProject表数据:
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>262163</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2012-04-20T21:54:03.3270721Z" />
<Source Name="System.ServiceModel" />
<Correlation ActivityID="{30c0de8a-fd38-4ca6-8c8a-b88f27a783bf}" />
<Execution ProcessName="WebDev.WebServer40" ProcessID="5276" ThreadID="12" />
<Channel/>
<Computer>WKSTCAL0123</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>http://msdn.microsoft.com/en- CA/library/System.ServiceModel.Channels.MessageReceived.aspx</TraceIdentifier>
<Description>Received a message over a channel.</Description>
<AppDomain>f8f8d82-2-129794323085920534</AppDomain>
<Source>System.ServiceModel.Activation.HostedHttpContext+HostedHttpInput/61784148</Source>
<ExtendedData xmlns="http://schemas.microsoft.com/2006/08/ServiceModel/MessageTransmitTraceRecord">
<MessageProperties>
<AllowOutputBatching>False</AllowOutputBatching>
<Via>http://localhost:57671/Services/ZEGApps-Web-Services-ProjectSetDomainService.svc/binary/GetTblProjects</Via>
</MessageProperties>
<MessageHeaders>
<To d4p1:mustUnderstand="1" xmlns:d4p1="http://schemas.microsoft.com/ws/2005/05/envelope/none" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://localhost:57671/Serv ices/ZEGApps-Web-Services-ProjectSetDomainService.svc/binary/GetTblProjects</To>
</MessageHeaders>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
有人对如何解决此问题有任何建议吗? TIA。
更新:除了从我创建的新tblProject数据库表中获取数据的调用之外,所有服务调用都在成功。
答案 0 :(得分:1)
我知道这听起来非常基本,但你的问题没有提到这些信息,问题听起来非常像这可能是你的答案:
您是否更新了服务器上的相应可执行文件?如果您仅使用新表的知识更新客户端代码,则服务器将以这种方式运行。
答案 1 :(得分:0)
非常感谢你的回复,约翰!
目前,该应用程序处于早期开发阶段,因此我实际上是使用Visual Studio Cassini Web服务器对其进行测试。客户端和服务器项目都在同一个解决方案中。因此,当我重建应用程序时,它应该重建相关的XAP文件,不应该吗?这是文件的时间戳指示的内容。顺便说一句,SQL Server数据库正在一个单独的数据库服务器上运行。
此外,当我打开并检查EDMX文件时,它会显示我期望的tblProject表。
如果还有其他我可能错过的或者您有任何其他建议,我们非常欢迎。
答案 2 :(得分:0)
(不知道这仍然是一个悬而未决的问题...) 您是否尝试过使用Fiddler进行远程通话?有时在服务器上发生错误,并将错误页面返回给客户端。当RIA Services处理呼叫时,您只会收到一般性错误消息。
如果你的开发服务器在localhost上,请记得使用“localhost”。 (有点)让Fiddler拦截了这个电话。