MTOM включен, получая «Максимальная длина запроса превышена».еще - PullRequest
0 голосов
/ 24 января 2012

Это разочаровывает ... Я немного новичок в веб-службах, и я не совсем понимаю, почему я не могу понять, как использовать Microsoft WSE 3.0 для включения кодирования MTOM для SOAP в моем веб-сервисе. Я добавил в свой веб-сервис следующее:

Web.config и app.config в моей библиотеке на сервере:

<configuration>
    <configSections>
        <section name="microsoft.web.services3" type="Microsoft.Web.Services3.Configuration.WebServicesConfiguration, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </configSections>
    <system.web>
        <httpRuntime maxRequestLength="134217728" executionTimeout="300"/>
        <webServices>
            <soapExtensionImporterTypes>
                <add type="Microsoft.Web.Services3.Description.WseExtensionImporter, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
            </soapExtensionImporterTypes>
            <soapServerProtocolFactory type="Microsoft.Web.Services3.WseProtocolFactory, Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </webServices>
        <compilation>
            <assemblies>
                <add assembly="Microsoft.Web.Services3, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
            </assemblies>
        </compilation>
    </system.web>
    <microsoft.web.services3>
        <messaging>
            <mtom serverMode="always" />
            <maxMessageLength value="134217728" />
        </messaging>
    </microsoft.web.services3>
</configuration>

На стороне клиента я добавил то же самое в app.config, добавив did clientMode = "On".

Когда я пытаюсь загрузить файл размером 40 МБ, я получаю популярную ошибку «Превышена максимальная длина запроса».

Любое объяснение? Должен ли я сказать транспортам использовать эту конфигурацию? Как я могу это сделать? Спасибо!

1 Ответ

2 голосов
/ 24 января 2012

Возможно, вы работаете с maxAllowedContentLength веб-сервера.Если вы используете IIS7, попробуйте добавить этот блок кода в ваш файл web.config.IIS7 фильтрует запрос до того, как среда выполнения http его получает.

http://msdn.microsoft.com/en-us/library/ie/ms689462(v=vs.90).aspx

<system.webServer>
    <security>
        <requestFiltering>
            <requestLimits maxAllowedContentLength="134217728" />
        </requestFiltering>
    </security>
</system.webServer>
...