2010-05-17 4 views
11

Hier ist meine web.config, Ausführen eines WCF-Dienstes in einer Anwendung auf IIS7, aber nichts wird in die angegebene Datei geschrieben. Die Berechtigung für die Datei wurde für alle erteilt.wcf versuchen, die Ablaufverfolgung zum Debuggen einrichten, nicht in die Protokolldatei schreiben

<system.diagnostics> 
    <sources> 
    <source name="System.ServiceModel" switchValue="Information, ActivityTracing,  error, warning, critical" propagateActivity="true"> 
    <listeners> 
    <add name="traceListener" 
    type="System.Diagnostics.TextWriterTraceListener" 
    initializeData="c:\log\tracestext.log" /> 

    </listeners> 
    </source> 
    </sources> 
</system.diagnostics> 

Ich kann eine Service-Referenz ganz gut hinzufügen.
Ich versuche dann den Dienst von einer Windows App aus aufzurufen und bekomme nach ein paar Minuten einen Fehler auf dem Rechner mit der Windows App "Client kann die Sicherheitsverhandlung nicht innerhalb des konfigurierten Timeouts (00:00:00) beenden Das aktuelle Verhandlungsbein ist 1 (00:00:00). "

aber absolut nichts wird in die Ablaufverfolgung Protokolldatei in Config geschrieben geschrieben.

Gibt es noch etwas anderes, was ich tun muss, um die Verfolgung zu aktivieren? Danke für Ihre Hilfe

EDIT: „Quellen“ Abschnitt entspricht jetzt der Abschnitt hier empfohlen: „Diagnostik messagelogging“ http://msdn.microsoft.com/en-us/library/aa702726.aspx

ich habe hinzugefügt Abschnitt „System.ServiceModel“

und das Ereignis Betrachter zeigt: „Message Logging eingeschaltet wurde Sensible Informationen können im Klartext eingeloggt sein, auch wenn es auf dem Draht verschlüsselt wurde. B. Nachrichtentexte Prozessname:. w3wp Prozess-ID: 1784 “

bu t Die Protokolldatei ist noch leer

Antwort

14

Ja - Sie haben gerade einige .NET-Tracing-Quellen und Listener definiert - Sie haben WCF jedoch noch nicht angewiesen, die Tracefunktion tatsächlich auszuführen!

Sie müssen auch:

<system.serviceModel> 
    <diagnostics> 
     <messageLogging 
      logMessagesAtTransportLevel="true" logMessagesAtServiceLevel="false" 
      logMalformedMessages="true" logEntireMessage="true" 
      maxSizeOfMessageToLog="65535000" maxMessagesToLog="500" /> 
    </diagnostics> 
</system.serviceModel> 

Diese beiden Abschnitte der Config kombiniert sollte es tun!

Um Ihre Nachrichten zurück in die Protokolldatei, um sofort, könnten Sie eine Einstellung zu Ihrem <system.diagnostics> Abschnitt hinzufügen möchten:

<system.diagnostics> 
    ... everything you already have.... 

    <trace autoflush="true" /> 
</system.diagnostics> 
+0

ok Fortschritt! Dies wurde in der Anwendungsereignisanzeige angezeigt: Nachrichtenprotokollierung wurde aktiviert. Sensible Informationen können im Klartext protokolliert werden, selbst wenn sie auf dem Draht verschlüsselt waren: zum Beispiel bei Nachrichtentexten. Prozessname: w3wp Prozess-ID: 1784 Die Protokolldatei ist jedoch nach einigen fehlgeschlagenen Serviceaufrufen immer noch leer. –

+0

@Joey J: ein zusätzliches Element zu meiner Antwort hinzugefügt - versuchen Sie das. –

+0

Ich habe versucht, immer noch nichts = ( –

4

in die Protokolldatei zu schreiben, stellen Sie sicher, dass die Identität Lauf Ihre Webanwendung hat Schreibzugriff auf das Protokollverzeichnis.

Sie können die Identität in der IIS 7-Verwaltungskonsole finden. Wählen Sie den Anwendungspool aus, den Ihre Webanwendung verwendet. Klicken Sie auf Erweiterte Einstellungen ... Suchen Sie im Eigenschaftsfenster nach dem Identitätsfeld. Es kann Netzwerkdienst sagen. Dies ist das Konto, das Schreibberechtigung für den Protokollausgabeordner benötigt.

Wenn Sie bereits eine Protokolldatei in diesem Verzeichnis haben, versuchen Sie, sie zu löschen, und lassen Sie sie vom Framework erstellen.

Hoffe, das hilft.

0
  1. Stellen Sie sicher konfiguriert haben sowohl die system.diagnostics und die System.ServiceModel/konfiguriert Diagnose Abschnitte.

  2. Stellen Sie sicher, dass Sie sie in der korrekten App.config/Web.config-Datei konfiguriert haben.Zu beachten ist, dass mehrere Konfigurationsdateien in einem Projekt vorhanden sein können und dass die verwendete Konfiguration von der Buildkonfiguration abhängt.

Persönlich hatte ich das gleiche Symptom, bis ich, dass ich legte die Abschnitte unter app.config bemerkt (in meinem Fall, Client-Seite-Tracing) statt app.DebugLocal.config. Letzteres wurde verwendet, da meine Build-Konfiguration auf DebugLocal gesetzt wurde.

0

Wahrscheinlich liegt das Problem an der Berechtigung, in das Protokollverzeichnis zu schreiben, das in Ihrer Konfigurationsdatei angegeben ist. Wenn Sie nicht sicher sind, wer der Benutzer im Kontext ist, erteilen Sie allen Maschinenbenutzern die Schreibberechtigung.

  • Rechtsklick in Log-Verzeichnis
  • Klicken Sie auf der Registerkarte "Sicherheit"
  • Klicken Sie bearbeiten
  • On "Gruppennamen oder Benutzer" die Option
  • On " "Users \ Benutzer Computername" Berechtigungen "Abschnitt gewähren Erlaubnis zu schreiben

Es funktionierte gut für mich.

Verwandte Themen