Ответ 1
По умолчанию последняя версия WCF фактически устанавливает значения по умолчанию, а json - по умолчанию. Неясно, какое именно использование WCF по умолчанию. Это оказывается webHttpBinding. Вы также увидите массу примеров в Интернете, показывающих атрибуты, применяемые к методу службы, такие как [WebGet]. Метод не требует никаких атрибутов. Чтобы maxStringContentLength повлиял, вам необходимо правильно настроить привязку и поведение. Вот правильные записи в файле web.config:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="DevServiceBehavior" >
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="DeveloperService" behaviorConfiguration="DevServiceBehavior" >
<endpoint address="" binding="webHttpBinding" contract="DeveloperService" bindingConfiguration="webHttpBindingDev" behaviorConfiguration="jsonBehavior">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<bindings>
<webHttpBinding>
<binding name="webHttpBindingDev">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</webHttpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
</system.serviceModel>