예제 #1
0
        public void HelperJson()
        {
            var status = new OperatorStatus
            {
                Success      = true,
                Code         = 1,
                Message      = "Message",
                InnerMessage = "InnerMessage",
                Exception    = new System.Exception("Exception")
            };
            var json1 = SmartSerializer.ToInnerString(status);
            var opt   = SmartSerializer.FromInnerString <OperatorStatus>(json1);
            var json2 = SmartSerializer.ToInnerString(opt);

            opt = (OperatorStatus)SmartSerializer.FromInnerString(json2, typeof(OperatorStatus));
            Assert.IsTrue(opt.Message == "Message", json1);
            Assert.IsTrue(opt.InnerMessage == null, json1);
        }
예제 #2
0
        /// <summary>
        ///     调用检查
        /// </summary>
        /// <param name="context"></param>
        public async Task <(bool success, IInlineMessage message)> CheckRequest(HttpContext context)
        {
            HttpContext = context;
            var request = context.Request;

            //ITokenResolver
            if (!TryGetHeader(request, "x-zmvc-ver", out var ver))
            {
                Message = new HttpMessage
                {
                    IsOutAccess = true,
                    HttpContext = context,
                    Uri         = request.Path.Value,
                    HttpMethod  = request.Method.ToUpper(),
                    ID          = Guid.NewGuid().ToString("N").ToUpper()
                };
                if (!CheckApiRoute())
                {
                    return(false, null);
                }
                CheckTrace();
                await Prepare();

                return(true, Message);
            }
            var content = await ReadContent();

            FlowTracer.MonitorDebug(content);
            if (ver != "v2")
            {
                var message = SmartSerializer.FromInnerString <InlineMessage>(content);
                message.DataState = MessageDataState.ArgumentOffline;
                return(true, message);
            }
            Message = new HttpMessage
            {
                ID                  = GetHeader(context.Request, "x-zmvc-id"),
                HttpContext         = context,
                Uri                 = request.Path.Value,
                HttpMethod          = request.Method.ToUpper(),
                Argument            = content,
                HttpContent         = content,
                ExtensionDictionary = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase),
                DataState           = MessageDataState.ArgumentOffline
            };
            if (!CheckApiRoute())
            {
                return(false, null);
            }
            if (TryGetHeader(context.Request, "x-zmvc-trace", out var trace))
            {
                Message.TraceInfo = SmartSerializer.ToObject <TraceInfo>(trace);
            }
            if (TryGetHeader(context.Request, "x-zmvc-user", out var user))
            {
                Message.User = SmartSerializer.ToObject <Dictionary <string, string> >(user);
            }
            if (TryGetHeader(context.Request, "x-zmvc-ctx", out var ctx))
            {
                Message.Context = SmartSerializer.ToObject <Dictionary <string, string> >(ctx);
            }
            return(true, Message);
        }