c # - WCF: Den underliggende forbindelse blev lukket: Forbindelsen blev lukket uventet

Indlæg af Hanne Mølgaard Plasc

Problem



Da dette er meget almindeligt problem, men der ikke er nogen ordentlig løsning, der kan løse dette problem. Jeg oplever også dette 'Den underliggende forbindelse blev lukket: Forbindelsen blev lukket uventet' problem for mine WCF web-tjenester, men det er tilfældigt, og der er ikke noget specifikt scenario, som jeg kan reproducere. Jeg har forsøgt at løse dette problem siden nogle uger og forsøgte alle mulige løsninger, herunder forøgelse af timeout, aktivering/deaktivering af den fortsatte tilkobling, åbning af en ny forbindelse for hver anmodning og lukning lige efter afslutningen af ​​anmodningen, men der er intet held. Jeg har også muliggjort sporing og logning på både server og klientsiden, men kunne ikke finde et sådant specifikt problem, der kan forårsage dette problem.


Disse WCF SOAP web-tjenester implementeret på Windows server miljø ved hjælp af IIS 7 og. Net Framework 4.0


Client Side Tracing:


System.Net.Sockets Verbose: 0 : [351180] 00000000 :                                                 : 
    DateTime=2017-01-20T14:25:44.4000839Z
System.Net.Sockets Verbose: 0 : [351180] Exiting Socket#34051556::Receive()     -> Int32#0
    DateTime=2017-01-20T14:25:44.4000839Z
System.Net.Sockets Verbose: 0 : [351180] Socket#34051556::Dispose()
    DateTime=2017-01-20T14:25:44.4000839Z
System.Net Error: 0 : [351180] Exception in HttpWebRequest#40245115:: - The underlying connection was closed: The connection was closed unexpectedly..
    DateTime=2017-01-20T14:25:44.4157088Z
System.Net Error: 0 : [351180] Exception in HttpWebRequest#40245115::GetResponse - The underlying connection was closed: The connection was closed unexpectedly..
    DateTime=2017-01-20T14:25:44.4157088Z


Server Side Tracing:


System.Net.Sockets Verbose: 0 : [10808] Exiting DNS::GetHostByName()    -> IPHostEntry#31978062
    DateTime=2017-01-20T14:16:20.7036270Z
System.Net.Sockets Verbose: 0 : [10808] Exiting DNS::GetHostAddresses()     -> IPAddress[]#52697188
    DateTime=2017-01-20T14:16:20.7036270Z
System.Net.Sockets Verbose: 0 : [10808] DNS::GetHostAddresses()
    DateTime=2017-01-20T14:25:03.3938764Z
System.Net.Sockets Verbose: 0 : [10808] DNS::GetHostByName()
    DateTime=2017-01-20T14:25:03.3938764Z
System.Net.Sockets Verbose: 0 : [10808] Exiting DNS::GetHostByName()    -> IPHostEntry#39699746
    DateTime=2017-01-20T14:25:03.4094763Z
System.Net.Sockets Verbose: 0 : [10808] Exiting DNS::GetHostAddresses()     -> IPAddress[]#12400315
    DateTime=2017-01-20T14:25:03.4094763Z


Tracing Config:


<system.diagnostics>
    <trace autoflush="true" />
    <sources>
            <source name="System.ServiceModel" 
                    switchValue="Critical, Error, Warning, Verbose , Information, ActivityTracing"
                    propagateActivity="true">
            <listeners>
               <add name="sdt" 
                   type="System.Diagnostics.XmlWriterTraceListener" 
                   initializeData= "c:stacktrace\_log.log" />
            </listeners>
         </source>
    </sources>
</system.diagnostics>


Jeg vil sætte pris på, om nogen kan hjælpe med at løse dette problem.

Bedste reference


Endelig har jeg fundet ud af dette problem. Problemet var med belastningsbalancenes forbindelsestidsudgang, der taber forbindelsen, når anmodningen tager længere tid end den grænse, der er defineret i lastbalanceren. Tak alle for din hjælp.