Отправка большого XML из Silverlight в WCF - PullRequest
5 голосов
/ 21 мая 2010

Я хочу отправить большую XML-строку в службу WCF SVC из Silverlight.

Похоже, что что-то меньше 50k отправляется правильно, но если я пытаюсь отправить что-то сверх этого лимита, мой запрос достигает сервера (вызывается BeginRequest), но никогда не достигает моего SVC. Я получаю классическое исключение "Не найдено".

Есть идеи, как повысить этот лимит?

Если я не могу поднять это? Какие у меня есть другие варианты?

Вот моя обязательная конфигурация

<bindings>
        <customBinding>
            <binding name="customBinding0" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647">
                <binaryMessageEncoding>
        <readerQuotas
            maxArrayLength="2147483647"
            maxBytesPerRead="2147483647"
            maxDepth="2147483647"
            maxNameTableCharCount="2147483647"
            maxStringContentLength="2147483647" />

      </binaryMessageEncoding>
                <httpTransport/>
            </binding>
            <binding name="customBindingSecure" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647">
                <binaryMessageEncoding>
        <readerQuotas
            maxArrayLength="2147483647"
            maxBytesPerRead="2147483647"
            maxDepth="2147483647"
            maxNameTableCharCount="2147483647"
            maxStringContentLength="2147483647" />
                </binaryMessageEncoding>
                <httpsTransport/>
            </binding>
        </customBinding>
    </bindings>

Редактировать: Подробнее: Если я прерву запрос конца Global.asax, я увижу в ответе "Неверный запрос 400"

Изменить: Еще раз подробнее: я активировал трассировку, и я вижу следующую ошибку: Превышена квота максимального размера сообщения для входящих сообщений (65536). Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize в соответствующем элементе привязки.

Тем не менее, мой maxReceivedMessageProperty уже установлен на 2147483647.

Ответы [ 3 ]

6 голосов
/ 21 мая 2010

Хорошо, получилось!

Поскольку я использую customBinding, для элемента httpTransport необходимо установить maxReceivedMessageSize следующим образом:

<bindings>
        <customBinding>
            <binding name="customBinding0" >
                <binaryMessageEncoding>
        <readerQuotas
            maxArrayLength="2147483647"
            maxBytesPerRead="2147483647"
            maxDepth="2147483647"
            maxNameTableCharCount="2147483647"
            maxStringContentLength="2147483647" />

      </binaryMessageEncoding>
                <httpTransport maxReceivedMessageSize="4194304" />
            </binding>
            <binding name="customBindingSecure">
                <binaryMessageEncoding>
        <readerQuotas
            maxArrayLength="2147483647"
            maxBytesPerRead="2147483647"
            maxDepth="2147483647"
            maxNameTableCharCount="2147483647"
            maxStringContentLength="2147483647" />
                </binaryMessageEncoding>
                <httpsTransport  maxReceivedMessageSize="4194304" />
            </binding>
        </customBinding>
    </bindings>

Спасибо всем за помощь!

1 голос
/ 25 января 2013

Вы также можете включить ведение журнала WCF для получения дополнительной информации об исходной ошибке.Это помогло мне решить эту проблему.

Добавьте следующее в ваш web.config, он сохранит журнал в C: \ log \ Traces.svclog

<system.diagnostics>
    <sources>
        <source name="System.ServiceModel"
                  switchValue="Information, ActivityTracing"
                  propagateActivity="true">
            <listeners>
                <add name="traceListener"
                     type="System.Diagnostics.XmlWriterTraceListener"
                     initializeData= "c:\log\Traces.svclog" />
            </listeners>
        </source>
    </sources>
</system.diagnostics>
0 голосов
/ 21 мая 2010

Попробуйте это в app.config / web.config на стороне сервера:

<system.web>
    <httpRuntime maxRequestLength="109200" executionTimeout="3600" />
</system.web>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...