Я сталкиваюсь с ошибкой 413 в службе WCF, даже если для maxReceivedMessageSize установлено значение max, т.е. 2147483647, а фактический размер сообщения меньше 50 КБ.
Эта проблема возникает только тогда, когда между двумя запросами существует идеальное время. Точный сценарий выглядит следующим образом: 1. Отправьте 1000 сообщений, каждое из которых имеет размер около 38 КБ. СТАТУС: ПРОЙДЕН 2. Подождите некоторое время (минимум 3 минуты) 3. Отправьте 1 сообщение. СТАТУС: НЕУДАЧА. (ошибка 413)
Я использую привязку ws2007FederationHttpBinding. Тег Web.config выглядит следующим образом:
<ws2007FederationHttpBinding>
<binding name="federationHttpBinding" openTimeout="00:04:00" closeTimeout="00:04:00" receiveTimeout="00:04:00" sendTimeout="00:40:00" maxReceivedMessageSize="2147483647">
<!-- <readerQuotas maxArrayLength="2147483647" maxDepth="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647" /> -->
<security mode="TransportWithMessageCredential">
<message establishSecurityContext="false">
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
Тег привязки на стороне клиента выглядит следующим образом:
<ws2007FederationHttpBinding>
<binding name="AuthorizationBinding" openTimeout="00:04:00" closeTimeout="00:04:00" receiveTimeout="00:04:00" sendTimeout="00:40:00" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647">
<readerQuotas maxArrayLength="2147483647" maxDepth="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" maxStringContentLength="2147483647"/>
<security mode="TransportWithMessageCredential">
<message establishSecurityContext="false"/>
</security>
</binding>
</ws2007FederationHttpBinding>