आमतौर पर डब्ल्यूसीएफ सेवा सर्विसहोस्ट में होस्ट की जाती है, अगर डब्ल्यूसीएफ-सेवा विफल हो जाती है तो डब्ल्यूसीएफ सेवा को मारने और एक नया शुरू करने का एकमात्र विकल्प है। जब WCF सेवा विफल रहता है
ServiceHost एक घटना ट्रिगर "गलती" है कि सक्रिय है है:
ServiceHost host = new ServiceHost(new Service.MyService());
host.Faulted += new EventHandler(host_faulted);
host.Open();
यह गलती के कारण अपवाद प्राप्त करने के लिए संभव है, लेकिन यह थोड़ा अधिक काम की आवश्यकता है:
public class ErrorHandler : IErrorHandler
{
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
}
public bool HandleError(Exception error)
{
Console.WriteLine("exception");
return false;
}
}
public class ErrorServiceBehavior : IServiceBehavior
{
public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
}
public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
ErrorHandler handler = new ErrorHandler();
foreach (ChannelDispatcher dispatcher in serviceHostBase.ChannelDispatchers)
{
dispatcher.ErrorHandlers.Add(handler);
}
}
}
ServiceHost host = new ServiceHost(new Service.MyService());
host.Faulted += new EventHandler(host_faulted);
host.Description.Behaviors.Add(new ErrorServiceBehavior());
host.Open();
क्रेडिट http://www.haveyougotwoods.ca/2009/06/24/creating-a-global-error-handler-in-wcf
स्रोत
2009-12-02 15:12:01
यहां आप सभी सिद्धांत प्राप्त कर सकते हैं http://msdn.microsoft.com/en-us/library/ms789041(v=vs.110).aspx –