【问题标题】:debugging Silverlight WCF RIA app; "Load operation failed for query 'GetTblProjects'. The remote server returned an error: NotFound."调试 Silverlight WCF RIA 应用程序; “查询'GetTblProjects'的加载操作失败。远程服务器返回错误:NotFound。”
【发布时间】:2012-04-20 22:33:06
【问题描述】:

目前我正在构建一个 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 数据库表中获取数据的调用之外,所有服务调用均成功。

【问题讨论】:

  • 是所有服务调用都失败还是只有一个新创建的实体域对象失败?

标签: wcf silverlight


【解决方案1】:

我知道这听起来很基本,但是您的问题没有提及此信息,而且问题听起来很像这可能是您的答案:

您是否更新了服务器上相应的可执行文件?如果您仅使用新表的知识更新客户端代码,则服务器会以这种方式运行。

【讨论】:

    【解决方案2】:

    非常感谢您的回复,约翰!

    目前,该应用程序处于相当早期的开发阶段,因此我实际上正在使用 Visual Studio Cassini Web 服务器对其进行测试。客户端和服务器项目都在同一个解决方案中。所以当我重建应用程序时,它应该重建相关的 XAP 文件,不是吗?这就是文件的时间戳所指示的内容。顺便说一句,SQL Server 数据库在单独的数据库服务器上运行。

    此外,当我打开并检查 EDMX 文件时,它会按预期显示 tblProject 表。

    如果还有什么我可能遗漏的或者您有任何其他建议,我们非常欢迎。

    【讨论】:

      【解决方案3】:

      (不知道这是否仍然是一个悬而未决的问题......) 您是否尝试过使用 Fiddler 并进行远程呼叫?有时在服务器上发生错误,并向客户端返回错误页面。在 RIA 服务处理调用时,您只会收到一般错误消息。

      如果您的开发服务器位于 localhost,请记住使用“localhost”。 (重点)让 Fiddler 拦截呼叫。

      【讨论】:

        猜你喜欢
        • 2011-12-26
        • 1970-01-01
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多