2012-06-05 6 views
6

Wir haben einen WCF-Dienst, der seit Monaten einwandfrei funktioniert. Gerade heute Morgen begannen die Anrufe bei diesem Dienst mit dem Proxy-Server, der "Verbindung zurückgesetzt durch Peer" meldet (502). Seltsamerweise gibt es keine IIS-Protokolleinträge für die gelöschten Verbindungen, obwohl wir sie mit WireShark erkennen können. Es scheint also so, als würde der Faden sterben und keine Spuren hinterlassen.Verbindung zurückgesetzt durch Peer (502) bei der Kontaktaufnahme WCF-Dienst in IIS 7.5

Die problematische Webmethode war das Abrufen von 100 Datenbanksätzen. Wir haben festgestellt, dass das Ergebnis wie erwartet auf 20 Datensätze beschränkt ist. Ich vermute, dass eine Auszeit ins Spiel kommt, aber ohne Ausnahme oder Rückverfolgung ist es sehr schwer zu wissen.

Hat jemand das erlebt? Irgendwelche Vorschläge zur Problembehandlung?

Antwort

16

Sie können die WCF-Diagnose für Ihren Dienst aktivieren, um weitere Informationen zu Ausnahmen zu erhalten.

Sie schnell in Gang zu bringen - in Ihrem Web (oder app) config:

1) In Abschnitt überall unter Konfigurationselement System.Diagnostics. Sie können den Pfad mit dem Pfad ersetzen, unter dem die Dateien gespeichert werden sollen.

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing"> 
     <listeners> 
      <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
      </add> 
      <add name="ServiceModelMessageLoggingListener"> 
      <filter type="" /> 
      </add> 
     </listeners> 
     </source> 
     <source name="System.ServiceModel" switchValue="Warning, ActivityTracing" propagateActivity="true"> 
     <listeners> 
      <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
      <filter type="" /> 
      </add> 
      <add name="ServiceModelTraceListener"> 
      <filter type="" /> 
      </add> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add initializeData="C:\temp\services_messages.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelMessageLoggingListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack"> 
     <filter type="" /> 
     </add> 
     <add initializeData="C:\temp\services_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack"> 
     <filter type="" /> 
     </add> 
    </sharedListeners> 
    </system.diagnostics> 

2) Unter System.ServiceModel hinzufügen folgende:

<diagnostics wmiProviderEnabled="false"> 
     <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" /> 
    </diagnostics> 

3) unter C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ V7.0A \ Bin \ SvcTraceViewer.exe starten . Laden Sie sowohl den Nachrichten-Trace (services_messages.svclog) als auch das Service-Trace-Protokoll (services_tracelog.svclog). Sie können entweder Drop-Dateien in das Werkzeug ziehen oder eine öffnen und dann eine weitere hinzufügen

4) Suchen Sie nach roten fetten Buchstaben für ein Problem.

Wenn Sie möchten, dass Ihre Erfahrung beim Bearbeiten der WCF-Konfiguration schmackhafter ist, können Sie SvcConfigEditor.exe verwenden, das sich im selben Ordner wie SvcTraceViewer.exe (# 3) befindet. Öffnen Sie einfach die Konfigurationsdatei und Sie sollten den Diagnoseordner sehen, der es Ihnen ermöglicht, die Diagnose zu starten/zu stoppen und zu konfigurieren.

+1

Vielen Dank! Schließlich konnte ich im Trace-Protokoll eine Ausnahme finden, die zur Lösung führte. –

+0

@nw. Was war das Problem? kannst du es teilen? – Siddhesh

+0

Schritt 2) ist optional und erfordert die Deklaration des Abschnitts messageLogging configuration. –

1

Bei der Fehlerbehebung kann eine WCF trace manchmal helfen, diese Probleme herauszufinden.

Verwandte Themen