/// <summary> /// Enables the creation of a custom <see cref="HttpResponseMessage"/> that is returned /// when an exception is encountered servicing an Http request. /// </summary> /// <param name="error">The exception thrown in the course of executing the Http request.</param> /// <returns>The <see cref="HttpResponseMessage"/> to return. It cannot be <c>null</c>.</returns> protected override HttpResponseMessage OnProvideResponse(Exception error) { HttpResponseMessage response = null; HttpResponseException errorAsResponseException = error as HttpResponseException; if (errorAsResponseException != null) { response = errorAsResponseException.Response; } else { WebFaultExceptionWrapper webFault = new WebFaultExceptionWrapper(error); if (webFault.IsWebFaultException) { object detailObject = webFault.DetailObject; if (detailObject != null) { response = detailObject as HttpResponseMessage; if (response == null) { response = new HttpResponseMessage(); response.Content = new ObjectContent(webFault.DetailType, detailObject); } } else { response = new HttpResponseMessage(); } response.StatusCode = webFault.StatusCode; } else { response = this.CreateHtmlResponse(error); } } this.PrepareHttpResponse(response); return(response); }
/// <summary> /// Enables the creation of a custom <see cref="HttpResponseMessage"/> that is returned /// when an exception is encountered servicing an Http request. /// </summary> /// <param name="error">The exception thrown in the course of executing the Http request.</param> /// <returns>The <see cref="HttpResponseMessage"/> to return. It cannot be <c>null</c>.</returns> protected override HttpResponseMessage OnProvideResponse(Exception error) { HttpResponseMessage response = null; HttpResponseException errorAsResponseException = error as HttpResponseException; if (errorAsResponseException != null) { response = errorAsResponseException.Response; } else { WebFaultExceptionWrapper webFault = new WebFaultExceptionWrapper(error); if (webFault.IsWebFaultException) { object detailObject = webFault.DetailObject; if (detailObject != null) { response = detailObject as HttpResponseMessage; if (response == null) { response = new HttpResponseMessage(); response.Content = new ObjectContent(webFault.DetailType, detailObject); } } else { response = new HttpResponseMessage(); } response.StatusCode = webFault.StatusCode; } else { response = this.CreateHtmlResponse(error); } } this.PrepareHttpResponse(response); return response; }