У меня есть служба WCF REST, размещенная в IIS с использованием .NET 4 RC.Вызовы POST для службы сериализуются с использованием JSON.Все работает нормально, пока размер одного из DataMember (строка) не превышает 8 КБ.В этом случае я получаю ошибку, описанную ниже, указывающую на превышение MaxStringContentLength.Атрибут maxStringContentLength для конечной точки был увеличен и правильно считывается из файла конфигурации.
Веб-конфигурация:
<services>
<service name="MyServiceServer" >
<endpoint address="http://localhost/MyService" kind="webHttpEndpoint" endpointConfiguration="serviceEndPoint" contract="IMyService">
</endpoint>
</service>
</services>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="serviceEndPoint" maxReceivedMessageSize="2048000" maxBufferSize="2048000" maxBufferPoolSize="0">
<readerQuotas maxStringContentLength="2048000" maxArrayLength="2048000" maxDepth ="65000"/>
<security mode="None">
<transport clientCredentialType="None"/>
</security>
</standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>
Интерфейс IMyService определен как:
public interface IMyService
{
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/request", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
void MyMehod(<Class Type> obj);
}
Полное сообщение об ошибке:
«Сервер обнаружил ошибку при обработке запроса.Сообщение об исключении: «Произошла ошибка при десериализации объекта типа.Максимальная квота длины строки содержимого (8192) была превышена при чтении данных XML.Эту квоту можно увеличить, изменив свойство MaxStringContentLength в объекте XmlDictionaryReaderQuotas, используемом при создании средства чтения XML. '.Смотрите журналы сервера для более подробной информации.Трассировка стека исключений: в System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions (считыватель XmlReaderDelegator, логическое verifyObjectName, DataContractResolver dataContractResolver) в System.Runtime.Serialization.Jerialization.Jerial.DaseRecjectBerjectJoDjectjectObDjectReader.OgnjectObDjectEgnObjectSigner.OjectjectObDjectReader.OntDispatcher.SingleBodyParameterMessageFormatter.DeserializeRequest (сообщение-сообщение, параметры Object []) в System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest (сообщение-сообщение, параметры Object []) в System.ServiceModel.Dispatcher.UriizeReis (MessageTestReader)параметров) в System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs (MessageRpc & rpc) в System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin (MessageRpc & rpc) в System.ServiceModel.Dispatcher.vp_setup.RecTecRecRec5Rec5Rec5ceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31 (MessageRpc & rpc) в System.ServiceModel.Dispatcher.MessageRpc.Process (логический isOperationContextSet) ”