Ошибка Silverlight при загрузке многих строк из базы данных SQL - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть приложение Silverlight, созданное на основе Entity Framework 4, куча модулей Silverlight и веб-проект, содержащий мои DomainService, Model и Web.Config.

Я извлекаю данные из локального узла SQL Server.работает отлично.Один из моих модулей SL извлекает данные из определенной таблицы, когда в этой таблице более 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) в System.Net.Browser.BrowserHttpWebRequest. <> c_ DisplayClass5.b _4 (объект sendState) в System.Netynserver.> c_ DisplayClass4.b _0 (Object sendState) --- конец трассировки стека внутренних исключений --- в System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, состояние объекта) в System.Net.Browser.BrowserHttpWebRequest.EndGetResponse (IAsyncResult asyncResult) в System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResynSecent1.EndQueryCore (IAsyncResult asyncResult) в System.ServiceModel.DomainServices.Client.DomainClient.EndQuery (IAsyncResult asyncResult) в System.ServiceModel.DomainServices.Client.DomainContext.ce --- at System.ServiceModel.DomainServices.Client.OperationBase.Complete (ошибка исключения) в System.ServiceModel.DomainServices.Client.LoadOperation.Complete (ошибка исключения) в System.ServiceModel.DomainServices.Client.Domainstec.asyncResult) в System.ServiceModel.DomainServices.Client.DomainContext. <> c_ DisplayClass1b.b _17 (объект)

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>

1 Ответ

1 голос
/ 11 ноября 2011

Я полагаю, что это связано с ограничением размера данных, которые могут передаваться по проводу, если речь идет о basichttpbinding. Это 64 тыс.

Есть 2 варианта для решения этой проблемы.

  • Потяните страницу данных за страницей
  • Загрузить данные в виде файла, разделенного запятыми, разобрать и отобразить

Обычно я загружаю данные в виде zip-файла, распаковываю на стороне клиента и затем обрабатываю такой большой объем данных.

...