2014-12-05 4 views
12

Ich habe einen WCF-Dienst in einem Windows-Dienst gehostet, der mit einem Winform-Client über netTCP kommuniziert.Leistungsindikatoren für Webdienstvorgänge

Der WCF-Dienst wurde vor langer Zeit in IIS gehostet, und zu diesem Zeitpunkt konnte ich jede Operation des WCF-Dienstes im Leistungsindikatormonitor (performanceCounters = "All") sehen. Dies machte es einfach zu sehen, welche Operationen am häufigsten verwendet wurden.

Ich brauche diese Leistungsindikatoren noch einmal, aber dieses Mal kann ich sie nicht im Leistungsmonitor finden, obwohl die performanceCounters auf "All" eingestellt sind?

Was muss ich tun, um sie zurück zu bringen?

Der WCF-Dienst Anmeldung verlangt seine Operationen zu verwenden, aber die Anmeldung wird von mir manuell durchgeführt, bedeutet dies, dass der Benutzer zuerst mit Benutzername und Passwort des Login Betrieb aufruft und wenn die nicht korrekten Daten, dann wird eine Security geworfen werden . Also nichts fortgeschritten.

+0

Haben Sie diese Einstellungen versucht? http://www.codeproject.com/Articles/431917/WCF-Service-Performance-Monitoring-using-Perfmon –

+0

Haben Sie WCF-Erweiterungspunkte hinzugefügt, z. IOperationInvoker? Sind Sie selbst hosting z. Windows-Dienst oder IIS? Unter welcher Identität läuft der Dienst? Haben Sie Ereignisprotokolle überprüft? Was hast du bisher versucht? –

+0

@ErikFunkenbusch Ich kann nicht mehr sehen, dass der Artikel mehr tut als ich getan habe. Es geht nicht um Performancecounter für die einzelnen Webservice-Methoden? – Banshee

Antwort

1

WCF ist voll von großartigen Überwachungstools und Erweiterbarkeitsendpunkten, die Sie entweder verwenden oder in Ihre eigene Lösung einbinden können.

Sie auf jeden Fall ein gewisses Maß an Instrumentierung aus der Box bekam können, http://msdn.microsoft.com/en-us/library/ms735098(v=vs.110).aspx dieser Artikel erklärt die einfache app.config ändern müssen youll diese Metriken veröffentlichen.

Wenn Sie detailliertere Informationen (oder einfach etwas, das für Sie noch zur Verfügung gestellt isnt) kann man in der Tat eine IOperationInvoker oder eine IParamterInspector erstellen, die direkt vor dem Aufruf der Methode aufgerufen wird (in Ihrem Implemenation) und gleich danach abgeschlossen ist. Ich habe dies bereits zuvor verwendet, um Kontextinformationen zu einem Thread hinzuzufügen, bevor die Methode aufgerufen wird, um zu überprüfen, ob der Anrufer Parameter übergibt, für die er berechtigt ist, und um die Anrufleistung durch einfaches Timestamping vor und nach dem Anruf zu messen. Eine Liste der Erweiterungspunkte im WCF-Stapel finden Sie unter http://msdn.microsoft.com/en-us/library/System.ServiceModel.Dispatcher(v=vs.110).aspx. Viel Glück