2012-12-10 11 views
5

Ich habe eine MyServiceBase Klasse, die von ServiceBase erbt. In MyService habe ich einen ServiceHost für meinen WCF-Service, der nur eine Methode mit IsOneWay = true -Eigenschaft hat. Ich habe diesen Code, um es zu initialisieren:So finden Sie den Grund für ServiceHost Fehlerhaftes Ereignis

host = new ServiceHost(typeof(MyService)); 
host.Opened += new EventHandler(host_Opened); 
host.Closed += new EventHandler(host_Closed); 
host.Faulted += new EventHandler(host_Faulted); 
host.UnknownMessageReceived += new EventHandler<UnknownMessageReceivedEventArgs>(host_UnknownMessageReceived); 
host.Open(); 

Manchmal Host Faulted Ereignis auslöst, aber EventArgs in * host_Faulted * Methode ist immer leer, so kann ich den Grund es nicht herausfinden. Bitte helfen. Danke in Bezug.

+0

Ich habe versucht, Pseudovariablen zu verwenden (http://msdn.microsoft.com/en-us/library/ms164891.aspx), aber ich habe keine $ Ausnahmevariable in lokalen Fenstern – Alekstim

Antwort

2

Dieser Link könnte nützlich für bessere Möglichkeiten der WCF Fehlerbehandlung und Debugging unter Beweis stellen:

How do I prevent a WCF service from enter a faulted state?

Anstatt also Ihre Frage zu beantworten, Ich empfehle einen besseren Weg, um Ihre Anforderung zu erreichen.

+0

Vielen Dank. Dieser Link hat mir sehr geholfen – Alekstim

+0

Kein Problem. Froh, dass mein Vorschlag für dich funktioniert hat. – c0D3l0g1c

+3

Dies ist hilfreich, hat aber die eigentliche Frage nicht beantwortet. Wie erhält man den Ausnahme-Stack, der den Fehler verursacht hat? – David

0

Ich habe dieses Problem heute getroffen. Durch Aktivieren der WCF-Ablaufverfolgung hilft es, gab mir jedoch nicht den Grund. Nach vielen Debugging-Arbeiten fand ich den wahren Grund: Client, der WCF-Dienste verbraucht, stürzte ab. Da der Client ein umschlossener Windows-Dienst ist und sein Status immer noch läuft.

Also mein Vorschlag ist: versuchen Sie, alle Code-Blöcke in Ihrer Client-Anwendung zu fangen.

Verwandte Themen