Я не могу передать строку в качестве аргумента для вызова операции WCF. Строка довольно большая (около 12000 символов).
Я увеличил maxStringContentLength в web.config и поиграл почти со всеми атрибутами, но проблема все еще остается.
Я нашел обходной путь - разделить строку на стороне клиента и объединить на стороне сервера. Это работает так.
Кто-нибудь может направить меня к правильному пути решения этой проблемы? Почему вызов операции WCF может принять тот же объем данных (разделенный на 2 строковых параметра), но выдает ошибку, когда эти данные передаются в одном строковом параметре? Где мы настраиваем ограничение размера аргументов операции WCF?
--------------------------------- CODE ------------- -------------------
TestService.Service1Client client = new TestService.Service1Client();
string str = "VERY LARGE STRING";
//DOES NOT WORK
client.TakeLargeStringParam(str);
//WORKS
client.TakeLargeStringParam2(str.Substring(0, 5000), str.Substring(5000));
----------------------- Web.config --------------------- -----
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="819200" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:30701/Service1.svc" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IService1" contract="TestService.IService1"
name="BasicHttpBinding_IService1" />
</client>
</system.serviceModel>