Esempio n. 1
0
        public static Task WriteErrorToResponse(this IResponse httpRes, IRequest httpReq,
                                                string contentType, string operationName, string errorMessage, Exception ex, int statusCode)
        {
            var errorDto = ex.ToErrorResponse();

            HostContext.OnExceptionTypeFilter(ex, errorDto.ResponseStatus);

            if (HandleCustomErrorHandler(httpRes, httpReq, contentType, statusCode, errorDto))
            {
                return(EmptyTask);
            }

            if (httpRes.ContentType == null || httpRes.ContentType == MimeTypes.Html)
            {
                httpRes.ContentType = contentType;
            }
            if (HostContext.Config.AppendUtf8CharsetOnContentTypes.Contains(contentType))
            {
                httpRes.ContentType += ContentFormat.Utf8Suffix;
            }

            var hold = httpRes.StatusDescription;
            var hasDefaultStatusDescription = hold == null || hold == "OK";

            httpRes.StatusCode = statusCode;

            if (hasDefaultStatusDescription)
            {
                if (errorMessage != null)
                {
                    httpRes.StatusDescription = errorMessage;
                }
            }
            else
            {
                httpRes.StatusDescription = hold;
            }

            var serializer = HostContext.ContentTypes.GetResponseSerializer(contentType);

            if (serializer != null)
            {
                serializer(httpReq, errorDto, httpRes);
            }

            httpRes.EndHttpHandlerRequest(skipHeaders: true);

            return(EmptyTask);
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="iocResolver"></param>
        /// <param name="request"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        public static object CreateErrorResponse(object request, Exception ex)
        {
            ex = HostContext.AppHost.ResolveResponseException(ex);
            var responseStatus = ex.ToResponseStatus();

            if (HostContext.DebugMode)
            {
                // View stack trace in tests and on the client
                responseStatus.StackTrace = GetRequestErrorBody(request) + "\n" + ex;
            }

            Log.Error("ServiceBase<TRequest>::Service Exception", ex);

            var errorResponse = CreateErrorResponse(request, ex, responseStatus);

            HostContext.OnExceptionTypeFilter(ex, responseStatus);

            return(errorResponse);
        }
Esempio n. 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="iocResolver"></param>
        /// <param name="request"></param>
        /// <param name="ex"></param>
        /// <returns></returns>
        public static object CreateErrorResponse(object request, Exception ex)
        {
            if (HostContext.Config.ReturnsInnerException &&
                ex.InnerException != null && !(ex is IHttpError))
            {
                ex = ex.InnerException;
            }

            var responseStatus = ex.ToResponseStatus();

            if (HostContext.DebugMode)
            {
                // View stack trace in tests and on the client
                responseStatus.StackTrace = GetRequestErrorBody(request) + "\n" + ex;
            }

            Log.Error("ServiceBase<TRequest>::Service Exception", ex);

            var errorResponse = CreateErrorResponse(request, ex, responseStatus);

            HostContext.OnExceptionTypeFilter(ex, responseStatus);

            return(errorResponse);
        }