WCF и .NET 3.5: получение больших массивов - PullRequest
0 голосов
/ 14 июля 2011

Я изо всех сил пытаюсь понять, что я делаю неправильно. У меня есть простой интерфейс, который принимает массив. Я не могу справиться с более чем 150 предметами - возвращаю 400 плохих запросов. Что я делаю неправильно? Кто-нибудь может что-нибудь заметить? Я просмотрел этот пост, и он, кажется, является ответом, но он не работает для меня: WCF maxReceivedMessageSize не читается из конфигурации .

Служба размещена в IIS7 и использует .NET 3.5. Вот мой web.config:

    <system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="MyService.basicHttpBinding" maxReceivedMessageSize="5000000" maxBufferSize="5000000">
                <readerQuotas maxStringContentLength="5000000" maxArrayLength="5000000" />
            </binding>          
        </basicHttpBinding>
    </bindings>

    <behaviors>
        <serviceBehaviors>
            <behavior name="MyService.Service1Behavior">
                <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                <serviceMetadata httpGetEnabled="true"/>
                <!-- Please set this to false when deploying -->
                <serviceDebug includeExceptionDetailInFaults="True" httpHelpPageEnabled="True"/>
            </behavior>
        </serviceBehaviors>
    </behaviors>

    <services>
        <service behaviorConfiguration="MyService.Service1Behavior" name="MyService">
            <endpoint address="ws" binding="wsHttpBinding" contract="IMyService">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            <endpoint binding="basicHttpBinding" bindingConfiguration="MyService.basicHttpBinding" contract="IMyService" />
        </service>
    </services>
</system.serviceModel>

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Для устранения неполадок включите трассировку как на сервере, так и на клиенте, затем проверьте файл журнала. Сообщение об ошибке указывает на то, что объект не помечен как [Сериализуемый]. См. http://msdn.microsoft.com/en-us/library/ms732023.aspx для руководства.

1 голос
/ 14 июля 2011

Что такое конфиг на принимающей стороне? Я обнаружил, что сериализатор взорвался при получении большого количества данных.

...