Beispiel #1
0
        /// <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;
        }