2016-07-13 8 views
2

Ich habe ein Windows-Formular, das auf einen WCF-Dienst verweist. Alles funktioniert gut, aber manchmal bekomme ich eine Fehlermeldung, dass eine Auszeit eingetreten ist. Ich habe versucht, nach einer Lösung zu suchen, aber die Idee ist nicht so klar, so dass jede Hilfe geschätzt wird.WCF, das von Windows Form Timing Out verwiesen wird

in den Fenstern bilden die Datei app.config ich eine Bindung auf diese Weise hinzugefügt:

<basicHttpBinding> 
     <binding name="myBasicBinding" closeTimeout="00:51:00" openTimeout="00:51:00" 
      receiveTimeout="00:30:00" sendTimeout="00:51:00" hostNameComparisonMode="StrongWildcard" 
      maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" 
      transferMode="Streamed"> 
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
      maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" proxyCredentialType="None" 
       realm="" /> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     <binding name="BasicHttpBinding_IService1" /> 
     </basicHttpBinding> 


<client> 
<endpoint address="wcf URL" 
     binding="basicHttpBinding" bindingConfiguration="myBasicBinding" 
     contract="ServiceNew.IService1" name="BasicHttpBinding_IService1" /> 
    </client> 

in der WCF-Web-Konfigurations sollte ich etwas über die Zeit hinzufügen aus

?

auch, ich sende eine große Menge von Bytes, so dass ich sowohl mit der Auszeit und die Größe der Daten betroffen bin. Beachten Sie jedoch, dass die Zeitüberschreitung manchmal nach Sekunden des Anrufs auftritt.

+0

versuchen, die ReceiveTimeout –

+0

seine 30 Minuten erhöht, und als ich die Zeit, sagte heraus geschieht nach Sekunden manchmal. –

+0

Stellt der WCF-Dienst eine Verbindung zu einer Datenbank her oder führt eine andere Aktion aus, die das Zeitlimit verursachen kann? Auch wie viele Kunden den Service nutzen - gibt es ein hohes Verkehrsaufkommen? – Duanne

Antwort

0

Es könnte viele Gründe dafür geben. Beispielsweise könnte Ihr Windows-Ereignisprotokoll voll sein. Ich habe dies im Zusammenhang mit Sicherheitsprotokollen und Handshakes erlebt, die nicht abgeschlossen wurden. Sie sollten Diagnosenachverfolgung zB aktivieren:

<system.diagnostics> 
<sources> 
    <source name="System.ServiceModel" switchValue="Information,ActivityTracing" propagateActivity="true"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
    </source> 
    <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
      <add name="xml" /> 
     </listeners> 
    </source> 
</sources> 
<sharedListeners> 
    <add initializeData="C:\logs\TracingAndLogging-client.svclog" type="System.Diagnostics.XmlWriterTraceListener" name="xml" /> 
</sharedListeners> 
<trace autoflush="true" /> 

Werfen Sie einen Blick auf den folgenden Link zum Beispiel http://www.andyfrench.info/2010/11/wcf-service-throwing-immediate-timeout.html