public void ProvideFault( Exception error, MessageVersion version, ref Message fault) { //TODO Mono error handling var wfe = error as WebFaultException<string>; var fe = error as FaultException; if (wfe != null && wfe.StatusCode != HttpStatusCode.InternalServerError) ErrorLogger.Trace(() => wfe.Detail); else if (fe != null) ErrorLogger.Trace(() => fe.Message); else ErrorLogger.Error(error.GetDetailedExplanation()); }
public void ProvideFault( Exception error, MessageVersion version, ref Message fault) { var uae = error as UnauthorizedAccessException; var se = error as SecurityException; var fe = error as FaultException; var anse = error as ActionNotSupportedException; if (uae != null) { TraceSource.TraceEvent(TraceEventType.Verbose, 5501, uae.Message); if (fault == null) { fault = CreateError(version, uae.Message, HttpStatusCode.Unauthorized); var prop = (HttpResponseMessageProperty)fault.Properties[HttpResponseMessageProperty.Name]; prop.Headers.Add("WWW-Authenticate", MissingBasicAuth); } } else if (se != null) { TraceSource.TraceEvent(TraceEventType.Verbose, 5502, se.Message); if (fault == null) fault = CreateError(version, se.Message, HttpStatusCode.Forbidden); } else if (fe != null) { TraceSource.TraceEvent(TraceEventType.Verbose, 5503, fe.Message); if (fault == null) fault = CreateError(version, fe.Message, HttpStatusCode.BadRequest); } else if (anse != null) { TraceSource.TraceEvent(TraceEventType.Verbose, 5503, anse.Message); if (fault == null) fault = CreateError(version, anse.Message, HttpStatusCode.NotFound); } else { TraceSource.TraceEvent(TraceEventType.Error, 5504, error.GetDetailedExplanation()); if (fault == null) fault = CreateError(version, error.Message, HttpStatusCode.InternalServerError); } }