启用MTOM,获得“超出最大请求长度”。仍然

时间:2012-01-24 17:33:01

标签: c# asp.net web-services soap mtom

这令人沮丧......我对Web服务不熟悉,我真的不明白为什么我无法弄清楚如何使用Microsoft WSE 3.0在我的Web服务上启用SOAP的MTOM编码。我已将以下内容添加到我的Web服务中:

服务器上我的库中的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中,添加了clientMode =“On”。

当我尝试上传40MB文件时,我收到了流行错误“超出最大请求长度。”

任何解释?我是否必须告诉传输使用该配置?我怎么做?谢谢!

1 个答案:

答案 0 :(得分:2)

您可能正在遇到Web服务器的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>