2015-04-09 5 views
1

Я пытаюсь получить большие XML-сообщения, используя службы WCF с окнами SSL через HTTPS. Мое приложение построено поверх .NET Framework 4.5 и развертывается на сервере IIS 8.5.WCF maxReceivedMessageSize не работает по HTTPS

Используя следующую конфигурацию Web.Config, я могу получить большой XML через HTTP, но он представляет некоторые проблемы с 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).

Когда внешняя система (TIBO/PI от SAP) называет нашу службу он simplr doesen't работу, представляя следующее сообщение об ошибке:

HTTP/1.1 413 Request Entity Too Large Cache-Control: частный Сервер: Microsoft-IIS/8.0 X-Сеть САШ-версия: 4.0.30319 X-исходников,: = UTF-8 В QzpcVkFMRVxDb2RpZ28tYnJhbmNoLW9uZGExLW9uZGEyLW1lcmdlXFN1cHBsaWVyRmluYW 5jZS5XZWJTZXJ2aWNlc1xDb250cmF0b3Muc3Zj = X-Powered-By:?? ASP.NET Дата: Чт, 09 Apr 2015 22:28:41 GMT Content-Length: 0

+0

Можете ли вы показать конфигурацию для клиентского прокси и конечных точек? – Caveman

+0

До сих пор я тестировал использование SoapUI (без sucess, но также и без специальной конфигурации) и без явных endpoins на Web.config (так что все конечные точки используют ту же конфигурацию). – Andrew

ответ

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> 

к вам конфигурация. Надеюсь, поможет.

1

Это потому, что йо u имеет только конфигурацию для basicHttpBinding, но не для basicHttpsBinding. Создание конфигурации по умолчанию для SSL на основе связывания, а также:

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

Я применил эти aditional теги на моем Web.config. Тем не менее, решение кажется неустойчивым, работающим в одно мгновение и thaen, перестает работать снова. Вы представляете, что может быть причиной этого? – Andrew

+0

Когда он «не работает», как он себя ведет? Ошибка? если да, то какой? – tomasr

+0

HTTP/1.1 413 Request Entity Too Large Cache-Control: частный Сервер: Microsoft-IIS/8.0 X-Сеть САШ-версия: 4.0.30319 X-исходников,??? = UTF-8 B QzpcVkFMRVxDb2RpZ28tYnJhbmNoLW9uZGExLW9uZGEyLW1lcmdlXFN1cHBsaWVyRmluYW5jZS5XZWJTZXJ2aWNlc1xDb250cmF0b3Muc3Zj = X-Powered-By: ASP.NET Дата: Чт, 09 апр. 2015 22:28:41 GMT Content-Length: 0 – Andrew