0

Entity Framework 4で構築されたSilverlightアプリケーションがあり、Silverlightモジュールのヒープと、DomainService、Model、およびWeb.Configを含むWebプロジェクトがあります。

ローカルSQLServerからデータをプルすると、正常に機能します。SLモジュールの1つが特定のテーブルからデータをプルします。このテーブルに4000を超える行があると、アプリケーションがクラッシュし、次のエラーメッセージが表示されます。それが約1000の卵を持っているとき、それはうまく機能します。したがって、DomainServiceがすべての行を処理できないか、webconfigのバインディング設定が何らかの形で間違っている可能性があります。どうすればよいですか。

エラーメッセージ:

{System.ServiceModel.DomainServices.Client.DomainOperationException:クエリ'LoadSiteCageData'のロード操作が失敗しました。リモートサーバーがエラーを返しました:NotFound。---> System.ServiceModel.CommunicationException:リモートサーバーがエラーを返しました:NotFound。---> System.Net.WebException:リモートサーバーがエラーを返しました:NotFound。---> System.Net.WebException:リモートサーバーがエラーを返しました:NotFound。System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)atSystem.Net.Browser.BrowserHttpWebRequest。<>c_ DisplayClass5.b _4(Object sendState)atSystem.Net.Browser.AsyncHelper。<>c_ DisplayClass4.b_0(Object sendState)---内部例外スタックトレースの終了--- 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)---内部例外スタックトレースの終了--- System.ServiceModel.DomainServices.Client.WebDomainClient`1.EndQueryCore(IAsyncResult asyncResult)at System.ServiceModel System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad(IAsyncResult asyncResult)での.DomainServices.Client.DomainClient.EndQuery(IAsyncResult asyncResult)---内部例外スタックトレースの終了---System.ServiceModel.DomainServices.Client.OperationBaseで。System.ServiceModel.DomainServices.Client.LoadOperation.Complete(例外エラー)at System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad(IAsyncResult asyncResult)atSystem.ServiceModel.DomainServices.Client.DomainContext。<> c_DisplayClass1b.b _17(Object)

Web.Config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
    <sectionGroup name="system.serviceModel">
        <section name="domainServices" type="System.ServiceModel.DomainServices.Hosting.DomainServicesSection, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" allowDefinition="MachineToApplication" requirePermission="false" />
    </sectionGroup>
</configSections>
<appSettings />
    <system.web>

    <httpModules>
                <add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </httpModules>
    <compilation debug="true" strict="false" explicit="true" targetFramework="4.0">
        <assemblies>
            <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        </assemblies>
    </compilation>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">

    </pages>

    <authentication mode="Windows" />

</system.web>
<system.codedom></system.codedom>

<system.webServer>
    <modules>
                <add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name="">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <bindings>
        <customBinding>
            <binding name="MyService.Web.Service1.customBinding0">
                <binaryMessageEncoding />
                <httpTransport />
            </binding>
        </customBinding>
    </bindings>
    <services>
        <service name="MyService.Web.Service1">
            <endpoint address="" binding="customBinding" bindingConfiguration="MyService.Web.Service1.customBinding0" contract="MyService.Web.Service1" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        </service>
    </services>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>

4

1 に答える 1

1

これは、basichttpbinding に関する限り、通信できるデータのサイズの制限によるものだと思います。64kです。

これを回避するには 2 つのオプションがあります。

  • ページごとにデータをプルする
  • データをコンマ区切りファイルとしてダウンロードし、解析して表示します

私が通常行うことは、データを zip ファイルとしてダウンロードし、クライアント側で解凍してから、そのような大量のデータを処理することです。

于 2011-11-11T13:53:46.467 に答える