Webservice-Problem mit größerer Datenmenge unter IIS 6.0 und Windows Server 2003 SP2
-
Freitag, 29. März 2013 16:56
Hallo
Ich habe einen Webservice an einem Winserver 2003 SP2, IIS 6.0 und .Net Framework 4.0 bereitgestellt. Mit einem Web-Client kann ich problemlos darauf zugreifen und sämtliche Abfragen starten.
Jedoch ab einer bestimmten Datengröße der Rückgabe einer Abfrage bekomme ich u. s. Fehlermeldung.
Die Variable maxReceivedMessageSize im Webclient habe ich bereits auf 2147483647 erhöht. Daran kann es daher nicht liegen.
In "C:\WINDOWS\system32\inetsrv\MetaBase.xml" habe ich ebenfalls AspMaxRequestEntityAllowed auf 1073741824 erhöht. Jedoch ohne Wirkung.
Es scheint, ein globales Limit zu geben, das verhindert, dass größere Datenmengen zurückgegeben werden.
Unter IIS 7.0 habe ich das Problem nicht.
Ich bin ziemlich ratlos, was das angeht.
Für einen hilfreichen Hinweis wäre ich Euch sehr dankbar.
Unbehandelte Ausnahme: System.ServiceModel.CommunicationException: Fehler beim E mpfangen der HTTP-Antwort für http://192.168.180.126/Dienst2010/WebDienst2010.sv c. Die Ursache kann sein, dass die Dienstendpunktbindung kein HTTP-Protokoll ver wendet. Eine andere mögliche Ursache ist, dass der HTTP-Anforderungskontext vom Server abgebrochen wird (vermutlich auf das Herunterfahren des Diensts zurückzuf ühren). Weitere Informationen finden Sie in den Serverprotokollen. ---> System.N et.WebException: Die zugrunde liegende Verbindung wurde geschlossen: Unbekannter Fehler beim Empfangen.. ---> System.IO.IOException: Von der Übertragungsverbind ung können keine Daten gelesen werden: Eine vorhandene Verbindung wurde vom Remo tehost geschlossen. ---> System.Net.Sockets.SocketException: Eine vorhandene Ver bindung wurde vom Remotehost geschlossen bei System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size , SocketFlags socketFlags) bei System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) --- Ende der internen Ausnahmestapelüberwachung --- bei System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) bei System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size) bei System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrie vedStream, Boolean probeRead) --- Ende der internen Ausnahmestapelüberwachung --- bei System.Net.HttpWebRequest.GetResponse() bei System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.Http ChannelRequest.WaitForReply(TimeSpan timeout) --- Ende der internen Ausnahmestapelüberwachung --- Server stack trace: bei System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebEx ception(WebException webException, HttpWebRequest request, HttpAbortReason abort Reason) bei System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.Http ChannelRequest.WaitForReply(TimeSpan timeout) bei System.ServiceModel.Channels.RequestChannel.Request(Message message, Time Span timeout) bei System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message messa ge, TimeSpan timeout) bei System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean o neway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan ti meout) bei System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCal lMessage methodCall, ProxyOperationRuntime operation) bei System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message) Exception rethrown at [0]: bei System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage re qMsg, IMessage retMsg) bei System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgD ata, Int32 type) bei TestDienst2010.srv.IDienst2010.GetVorkalkulationListe(Int32 max) bei TestDienst2010.srv.Dienst2010Client.GetVorkalkulationListe(Int32 max) in D:\Entwickler\Khamis\src\TestDienst2010\Service References\srv\Reference.cs:Zeil e 327. bei TestDienst2010.Program.Main(String[] args) in D:\Entwickler\Khamis\src\Te stDienst2010\Program.cs:Zeile 17.
- Bearbeitet Khamis Diab Freitag, 29. März 2013 17:03
Alle Antworten
-
Freitag, 29. März 2013 20:23
Hat sich doch jetzt erledigt. Die Fehlermeldung ist wirklich irreführend.
Der Parameter "maxItemsInObjectGraph" musste erhöht werden.
Webserver, Web.Config:
<behaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="True" /> <serviceDebug includeExceptionDetailInFaults="true" /> <dataContractSerializer maxItemsInObjectGraph="2147483646"/> </behavior> </serviceBehaviors> </behaviors>
Client, app.config:
<behaviors> <endpointBehaviors> <behavior name="LargeList"> <dataContractSerializer maxItemsInObjectGraph="2147483646"/> </behavior> </endpointBehaviors> </behaviors> .... <client> <endpoint address="...." binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding" behaviorConfiguration="LargeList" contract="srv.IService1" name="BasicHttpBinding" /> </client>
- Als Antwort markiert Khamis Diab Freitag, 29. März 2013 20:24