/// <summary> /// Creates the error response. /// </summary> /// <param name="request">The request.</param> /// <param name="requestDto">The request dto.</param> /// <param name="ex">The ex.</param> /// <returns></returns> public static HttpError CreateErrorResponse(global::ServiceStack.Web.IRequest request, object requestDto, Exception ex) { try { Core.Log.WebEasNLogExtensions.ExecuteUsingLogicalContext(() => LogError(ex), request.SessionAs <IWebEasSession>(), requestDto); WebEasResponseStatus errorResponse = CreateWebEasResponseStatus(ex, requestDto); #if DEBUG errorResponse.StackTrace = GetStackTrace(request, requestDto, ex); errorResponse.Errors = GetErrors(ex, new List <ResponseError>()); #endif return(new HttpError(errorResponse, GetStatusCode(ex), GetErrorCode(ex), errorResponse.Message)); } catch (Exception exx) { // Trace.TraceInformation(exx.Message); return(new HttpError(exx, GetStatusCode(ex), GetErrorCode(ex), ex.Message)); } }
/// <summary> /// Gets the stack trace. /// </summary> /// <param name="request">The request.</param> /// <param name="ex">The ex.</param> /// <returns></returns> private static string GetStackTrace(global::ServiceStack.Web.IRequest httpRequest, object request, Exception ex) { return(string.Format("[{0}: {1}]:\n[REQUEST: {2}]\n{3}", (request ?? new object()).GetType().GetOperationName(), DateTime.UtcNow, httpRequest.AbsoluteUri, ex.ToDescription())); }