maxReceivedMessageSize не исправляет 413: запрос слишком велик
Мой звонок на мой веб-сервис WCFSystem.Net.WebException: The request failed with HTTP status 413: Request Entity Too Large.
Проверяя Fiddler, я вижу, что отправляю:
Контент-длина: 149839
Который более 65 КБ.
Включив трассировку WCF на сервере, я вижу:
System.ServiceModel.ProtocolException: превышен максимальный размер квоты для входящих сообщений (65536). Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize в соответствующем элементе привязки.
Добавление этого свойства не решает проблему.
Я пробовал только с этим свойством, и (позже) с другими, которые предложили посты. Вот что у меня сейчас(на сервере):
<basicHttpBinding>
<binding name="PricerServiceSoap"
closeTimeout="00:10:00" openTimeout="00:10:00"
receiveTimeout="00:10:00" sendTimeout="00:10:00"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
Моя единственная конечная точка (под<client>
) является:
<endpoint address="/NetPricingService/Service.asmx"
binding="basicHttpBinding" bindingConfiguration="PricerServiceSoap"
contract="Pricing.PricerService.PricerServiceSoap"
name="PricerServiceSoap" />
Я также добавил:
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
под<behavior>
.
Я даже запускаю (для IIS 7):
%windir%\system32\inetsrv\appcmd set config "WebServicesDev/PricingService"
-section:requestFiltering -requestLimits.maxAllowedContentLength:104857600
-commitpath:apphost
Ничто не имеет значения.
Одна загвоздка в том, что это служба WCF, предназначенная для замены старой службы ASMX. Скелет службы был создан с помощью svcutil из существующего WSDL. Я не могу изменить настройки клиента (и клиенты на нескольких языках). Мой тестовый клиентский проект импортировал службу с помощью Add Web Reference (в разделеAdd Service Reference / Advanced
), поэтому у меня нет конфигурации WCF. Тем не менее, тестовый клиент работает, если я указываю на более старый сервис ASMX.
Как я могу это исправить или диагностировать?
Дополнительная информация
Если я использую редактор конфигурации службы Microsoft для генерации конфигурации (настройка maxReceivedMessageSize и maxBufferSize), это работает. Проблема заключается в том, что конечная точка затем указывается в<service>
, и это не позволит мне указать относительный адрес /NetPricingService/Service.asmx. Если я отредактирую привязки в сгенерированном svcutil config (где конечная точка находится под<client>
), он не работает с большими запросами.