public static void SetResponseStatusAndJsonError(HttpContext httpContext, string statusCode, string statusDescription)
        {
            SetResponseStatus(httpContext, statusCode, statusDescription);
            if (httpContext != null)            //<serviceHostingEnvironment aspNetCompatibilityEnabled="false" /> web.config
            {
                httpContext.Response.ContentType = MediaTypesNames.ApplicationJson;
                var jsonError = new WrappedJsonError()
                {
                    Error = new HttpJsonError()
                    {
                        Code = statusCode, Message = statusDescription
                    }
                };
                httpContext.Response.Write(JSONHelper.Serialize(jsonError));
            }
#if !NETCORE
            else
            {
                var wcfcontext = WebOperationContext.Current;
                wcfcontext.OutgoingResponse.ContentType = MediaTypesNames.ApplicationJson;
                JsonFault jsonFault = new JsonFault(statusDescription, statusCode);
                throw new FaultException <JsonFault>(jsonFault, new FaultReason(statusDescription));
            }
#endif
        }
Esempio n. 2
0
        protected virtual Message GetJsonFaultMessage(MessageVersion version, Exception error)
        {
            BaseFault detail = null;
            var knownTypes = new List<Type>();
            string faultType = error.GetType().Name; //default

            if ((error is FaultException) &&
                (error.GetType().GetProperty("Detail") != null))
            {
                detail =
                    (error.GetType().GetProperty("Detail").GetGetMethod().Invoke(
                        error, null) as BaseFault);
                knownTypes.Add(detail.GetType());
                faultType = detail.GetType().Name;
            }

            var  jsonFault = new JsonFault
                             	{
                             		Message = error.Message,
                             		Detail = detail,
                             		FaultType = faultType
                             	};

            var faultMessage = Message.CreateMessage(version, "", jsonFault,
                                                     new DataContractJsonSerializer(jsonFault.GetType(), knownTypes));

            return faultMessage;
        }