Ich möchte wissen, ob eine unbehandelte Ausnahme den WCF-Dienst zum Absturz bringt. Ich habe das folgende Programm geschrieben, das zeigt, dass eine unbehandelte Ausnahme in einem Thread, der vom WCF-Dienst gestartet wurde, den gesamten WCF-Dienst zum Absturz bringt.
Meine Frage ist, ich möchte bestätigen, ob unbehandelte Ausnahme in Threads (gestartet von WCF-Dienst) WCF zum Absturz bringen wird? Meine Verwirrung ist ich denke WCF sollte stabilen Dienst, der nicht wegen unbehandelten Ausnahme abstürzen sollte.
Ich verwende VSTS 2008 + C# + .Net 3.5, um einen selbst gehosteten Windows Service-basierten WCF-Dienst zu entwickeln.
Hier sind die entsprechenden Teile des Codes,
namespace Foo
{
// NOTE: If you change the interface name "IService1" here, you must also update the reference to "IService1" in Web.config.
[ServiceContract]
public interface IFoo
{
[OperationContract]
string Submit(string request);
}
}
namespace Foo
{
// NOTE: If you change the class name "Service1" here, you must also update the reference to "Service1" in Web.config and in the associated .svc file.
public class FooImpl : IFoo
{
public string Submit(string request)
{
return String.Empty;
}
}
}
namespace Foo
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
ServiceHost host = new ServiceHost(typeof(FooImpl));
protected override void OnStart(string[] args)
{
host.Open();
// start a thread which will throw unhandled exception
Thread t = new Thread(Workerjob);
t.Start();
}
protected override void OnStop()
{
host.Close();
}
public static void Workerjob()
{
Thread.Sleep(5000);
throw new Exception("unhandled");
}
}
}
2 Stimmen
Ihr Beispiel zeigt nicht "unbehandelte Ausnahme in einem vom WCF-Dienst gestarteten Thread", sondern "unbehandelte Ausnahme in einem vom Windows-Dienst gestarteten Thread". Das hat nichts mit WCF zu tun.
0 Stimmen
Ich starte WCF selbst Host in Windows Service (host.Open()), die ich unbehandelte Ausnahme in WCF-Dienst bedeuten. Sorry für den verwirrenden Begriff, und alle Kommentare oder Antworten auf meine Frage?