0

現在、SilverlightWCFRIAアプリケーションを構築しています。クライアントが必要なデータを問題なく取得できるようになり、順調に進んでいます。次に、データベースにテーブルを追加し、関連するエンティティデータモデル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データベーステーブルからデータを取得するための呼び出しを除いて、すべてのサービス呼び出しが成功しています。

4

3 に答える 3

1

これはかなり基本的なことのように聞こえますが、あなたの質問にはこの情報が記載されておらず、問題は次のように聞こえます。

サーバー上の適切な実行可能ファイルを更新しましたか? 新しいテーブルの情報を使用してクライアント コードのみを更新した場合、サーバーはこのように動作します。

于 2012-04-23T17:21:12.423 に答える
0

ジョン、お返事ありがとうございます!

現在、アプリケーションはかなり初期の開発段階にあるため、実際にはVisual StudioCassiniWebサーバーを使用してテストしています。クライアントプロジェクトとサーバープロジェクトの両方が同じソリューションに含まれています。したがって、アプリケーションを再構築すると、関連するXAPファイルが再構築されますね。これは、ファイルのタイムスタンプが示すものです。ところで、SQLServerデータベースは別のデータベースサーバーで実行されています。

また、EDMXファイルを開いて検査すると、期待どおりにtblProjectテーブルが表示されます。

私が見逃したかもしれない何かが他にあるか、あなたが他の提案を持っているならば、彼らは大歓迎です。

于 2012-04-23T20:15:19.160 に答える
0

(これがまだ未解決の問題かどうかはわかりません...) Fiddler を使用してリモート呼び出しを行ってみましたか? サーバーでエラーが発生し、クライアントにエラー ページが返されることがあります。RIA Services が呼び出しを処理すると、一般的なエラー メッセージが表示されます。

開発サーバーが localhost にある場合は、忘れずに「localhost」を使用してください。(要点を添えて)Fiddlerによって通話が傍受されるようにします。

于 2012-06-18T14:00:24.393 に答える