ich hab ein kleines Problem mit einem WebService, der in Azure läuft. Gleich mal vorweg: Das Problem tritt nicht auf, wenn ich das Azure-Projekt lokal starte.
Also der Service enthält eine Methode, die ein relativ großes XML zurückgeben kann. Wenn ich diese Methode aufrufe, erhalte ich am Client die folgende Fehlermeldung:> Fehlermeldung:
The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter
> .
The InnerException message was 'There was an error deserializing the object of type System.String. The maximum string content length quota (8192) has been exceeded while reading XML data.
This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader.
Line 319, position 17.'. Please see InnerException for more details.
InnerException hab ich natürlich schon gecheckt, aber die ist NULL
Google brachte mir schon viele Ergebnisse bezüglich dieser Fehlermeldung, aber keiner der gefunden Lösungsansätze hat bisher was gebracht.
Hier mal meine web.config, die auf dem Server verwendet wird:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="LargeDataBasic"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="MyService.Service">
<endpoint name="basicHttpEndpoint"
binding="basicHttpBinding"
bindingConfiguration="LargeDataBasic"
contract="MyService.Contracts.IMyService">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Auf dem Client hab ich die Werte equivalent in der app.config gesetzt:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="myBasicHttpBinding"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="myBehaviour">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</endpointBehaviors>
</behaviors>
<client>
<endpoint name="basicHttpEndpoint"
address="http://624997c2ff774xxxxxxxx8a944fa8102.cloudapp.net/myService.svc"
behaviorConfiguration="myBehaviour"
binding="basicHttpBinding" bindingConfiguration="myBasicHttpBinding"
contract="MyService.Contracts.IMyService" />
</client>
</system.serviceModel>
Ich such jetzt schon seit mehreren Tagen nach der Ursache für den Fehler und komm einfach nicht weiter. Vielleicht kann mir da jemand einen Denkanstoss dazu geben.
Danke schon mal
Wenn ich da noch Up-to-date bin, dann erlaubt Azure das heraufsetzen von maxStringContentLength
nicht bzw. beschränkt dieses auf 8192. Begründung ist die Gesamtstabilität.
Int32.Max sind immerhin 2GB; sowas kann halt leider schon missbraucht und nur schwer priorisiert werden.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Kann ich mir aber ehrlich gesagt kaum vorstellen.
ich hab andere Services auch schon am Laufen, von denen ebenfalls Daten in der Größenordnung gesendet werden. Ein Vergleich der Konfigurationen brachte mich aber auch nicht weiter. Es ist eher so, dass ich bisher damit noch nie Probleme hatte.
Ich hab auch jetzt keine weiteren Informationen dazu gefunden, dass es da eine Beschränkung gibt. Falls es wirklich daran liegt, muss ich mir dringend was anderes einfallen lassen
Bei Stackoverflow finden sich zahlreiche Beiträge, die meine These unterstützen, wenn man nach "azure maxStringContentLength" sucht.
Aber die sind auch schon etwas älter (Februar '12).
Aber wie gesagt: kann auch sein, dass das Azure geändert hat und der Fehler wo anders liegt; ich seh jetzt auf Anhieb aber auch nicht wirklich was (sofern die Config greift).
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code