WCF maxReceivedMessageSize无法通过HTTPS工作

时间:2015-04-09 15:23:42

标签: .net wcf ssl https maxreceivedmessagesize

我正在尝试使用带有SSL over HTTPS的WCF服务encriptes接收大型XML消息。我的应用程序是基于.NET Framework 4.5构建的,并部署在IIS 8.5服务器上。

使用以下Web.Config配置我能够通过HTTP接收大型XML,但它在HTTPS上存在一些问题。 (HTTPS通信已经正常工作,带有自签名证书和所有)。

   <bindings>
      <basicHttpBinding>
        <binding maxReceivedMessageSize="5242880" maxBufferSize="5242880"/>
      </basicHttpBinding>

      <basicHttpsBinding>
         <binding maxReceivedMessageSize="5242880" maxBufferSize="5242880"/>
      </basicHttpsBinding>
    </bindings>

    <behaviors>   
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>

使用SoapUI进行一些测试,只有在更新定义时才会通过HTTPS发送大文件(即使Web.Config文件没有任何更改)。

当外部系统(来自SAP的TIBO / PI)调用我们的服务时,它简化了工作,并显示以下错误消息:

HTTP / 1.1 413请求实体太大 缓存控制:私有 服务器:Microsoft-IIS / 8.0 X-AspNet-Version:4.0.30319 X-SourceFiles:=?UTF-8?B?QzpcVkFMRVxDb2RpZ28tYnJhbmNoLW9uZGExLW9uZGEyLW1lcmdlXFN1cHBsaWVyRmluYW 5jZS5XZWJTZXJ2aWNlc1xDb250cmF0b3Muc3Zj?= X-Powered-By:ASP.NET日期:星期四,09四月2015 22:28:41 GMT内容长度:0

2 个答案:

答案 0 :(得分:1)

那是因为你只有basicHttpBinding的配置而不是basicHttpsBinding的配置。同时为基于SSL的绑定创建默认配置:

   <bindings>
      <basicHttpBinding>
        <binding maxReceivedMessageSize="5242880" maxBufferSize="5242880"/>
      </basicHttpBinding>
      <basicHttpsBinding>
        <binding maxReceivedMessageSize="5242880" maxBufferSize="5242880"/>
      </basicHttpsBinding>
    </bindings>

答案 1 :(得分:1)

尝试此绑定(我明确指定了绑定的名称,因此在服务配置中使用它)

<basicHttpBinding>
    <binding maxReceivedMessageSize="10485760">
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="10485760" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        <security mode="None"/>
    </binding>
</basicHttpBinding>
<basicHttpsBinding>
    <binding maxReceivedMessageSize="10485760">
        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="10485760" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
        <security mode="None"/>
    </binding>
</basicHttpsBinding>

如果不起作用,请尝试添加

<system.webServer>
    <serverRuntime uploadReadAheadSize="2147483646"/>
</system.webServer>

给你配置。希望它有所帮助。