2016-05-26 3 views
2

Wie der Titel nahe legt, sind wir derzeit mit einem ServiceStack v 4.0.44 SOAP-Dienst zu kämpfen, die die Ausnahme (full stacktrace here)ServiceStack SOAP XmlException: Das Eingabedokument hat eine Grenze gesetzt durch MaxCharactersInDocument überschreitet

XmlException: The input document has exceeded a limit set by MaxCharactersInDocument. 
... stacktrace cut down for brewity ... 
File "ServiceStack.Text.XmlSerializer" line 33 in Deserialize(System.String xml, System.Type type) 
File "ServiceStack.Serialization.DataContractSerializer" line 34 in DeserializeFromString(System.String xml, System.Type type) 
File "ServiceStack.Host.Handlers.SoapHandler" line 266 in ExecuteMessage(System.ServiceModel.Channels.Message message, ServiceStack.RequestAttributes requestAttributes, ServiceStack.Web.IRequest httpReq, ServiceStack.Web.IResponse httpRes) 

Wie werfen Was ich in anderen Antworten lesen Stackoverflow kann, ist dies eine Form des Schutzes gegen XML-Bomben in .net implementiert 4+ ref1ref2

Nun meine Frage: ist es möglich, dieses Verhalten in SS v4 außer Kraft zu setzen? Wir empfangen nur Anfragen von einer vertrauenswürdigen Quelle (BizTalk) mit Daten, so weit ich sehe, ist es kein Problem, diese .net-Sicherheitsmaßnahme zu deaktivieren.

Antwort

3

Sie können change the MaxCharactersInDocument die ServiceStack XmlSerialier verwendet von seinem aktuellen Standard von:

XmlSerializer.Instance = new XmlSerializer(maxCharsInDocument: 1024 * 1024); 
Verwandte Themen