Webservice-Problem mit größerer Datenmenge unter IIS 6.0 und Windows Server 2003 SP2

Beantwortet Webservice-Problem mit größerer Datenmenge unter IIS 6.0 und Windows Server 2003 SP2

  • Freitag, 29. März 2013 16:56
     
      Enthält Code

    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
     
     Beantwortet Enthält Code

    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
    •