Ejemplo n.º 1
0
        public bool Publish <TEvent>(TEvent @event) where TEvent : class, IEventBase
        {
            var handlers = _eventHandlerFactory.GetHandlers <TEvent>();

            if (handlers.Count > 0)
            {
                var handlerTasks = new Task[handlers.Count];

                handlers.ForEach((handler, index) =>
                {
                    handlerTasks[index] = handler.Handle(@event).ContinueWith(r =>
                    {
                        if (r.IsFaulted)
                        {
                            _logger.Error(r.Exception?.Unwrap(),
                                          $"handle event [{typeof(TEvent).FullName}] error, eventHandlerType:{handler.GetType().FullName}");
                        }
                    });
                });

                _ = handlerTasks.WhenAll().ConfigureAwait(false);

                return(true);
            }
            return(false);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 加密消息
        /// </summary>
        /// <param name="msg">要加密的消息</param>
        /// <returns>加密后的消息</returns>
        public string EncryptMsg(string msg)
        {
            var encryptMsg = "";
            var result     = Wxcpt.EncryptMsg(msg, _timestamp, _nonce, ref encryptMsg);

            if (result != 0)
            {
                Logger.Error("微信消息加密失败,result:" + result);
            }
            return(encryptMsg);
        }
Ejemplo n.º 3
0
        public bool Publish <TEvent>(TEvent @event) where TEvent : IEventBase
        {
            if (!_eventStore.HasSubscriptionsForEvent <TEvent>())
            {
                return(false);
            }
            var handlers = _eventStore.GetEventHandlerTypes <TEvent>();

            if (handlers.Count > 0)
            {
                var handlerTasks = new List <Task>();
                foreach (var handlerType in handlers)
                {
                    try
                    {
                        if (_serviceProvider.GetServiceOrCreateInstance(handlerType) is IEventHandler <TEvent> handler)
                        {
                            handlerTasks.Add(handler.Handle(@event));
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Error(ex, $"handle event [{_eventStore.GetEventKey<TEvent>()}] error, eventHandlerType:{handlerType.FullName}");
                    }
                }
                handlerTasks.WhenAll().ConfigureAwait(false);

                return(true);
            }
            return(false);
        }
Ejemplo n.º 4
0
 public static void MainTest()
 {
     Logger.Info("122334334");
     Logger.Debug("12333");
     Logger.Trace("122334334");
     Logger.Warn("12333");
     Logger.Error("122334334");
     Logger.Fatal("12333");
 }
Ejemplo n.º 5
0
        public static void Test()
        {
            Logger.Info("info message");
            Logger.Debug("debug message");
            Logger.Trace("Trace message");
            Logger.Error("Error messsage");
            Logger.Fatal("Fatal message");

            throw new ArgumentNullException();
        }
Ejemplo n.º 6
0
        public static void Test()
        {
            Logger.Info("info message");
            Logger.Debug("debug message");
            Logger.Trace("Trace message");
            Logger.Error("Error messsage");
            Logger.Fatal("Fatal message");

            log4net.LogManager.GetLogger("testTtTLogger").Info("121313");
        }
Ejemplo n.º 7
0
        public static void MainTest()
        {
            var abc = "1233";

            Logger.Info($"122334334 {abc}");
            Logger.Debug($"12333 {abc}");
            Logger.Trace("122334334");
            Logger.Warn("12333");
            Logger.Error("122334334");
            Logger.Fatal("12333");
        }
Ejemplo n.º 8
0
 /// <summary>
 /// 获取机器人回复
 /// </summary>
 /// <param name="request">请求</param>
 /// <returns>回复信息</returns>
 public static string GetBotReply(string request)
 {
     try
     {
         var response = HttpHelper.HttpGetString(String.Format(QingyunkeRequestUrlFormat, request));
         if (!string.IsNullOrEmpty(response))
         {
             var res = ConvertHelper.JsonToObject <QingyunkeResponseModel>(response);
             if (res != null && res.Result == 0)
             {
                 return(res.Content);
             }
         }
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
     }
     return("error");
 }
Ejemplo n.º 9
0
        public static async Task <string> ReturnMessageAsync(string postStr)
        {
            var responseContent = "";

            try
            {
                var xmldoc = new XmlDocument();
                xmldoc.LoadXml(postStr);

                var msgId = xmldoc.SelectSingleNode("/xml/MsgId")?.InnerText;
                if (msgId.IsNotNullOrEmpty())
                {
                    var limiter = RedisManager.GetRateLimiterClient($"wechatMsgRateLimiter-{msgId}", TimeSpan.FromSeconds(20));
                    if (!await limiter.AcquireAsync())
                    {
                        Logger.Info($"duplicate msg blocked, msg id: {msgId}");
                        return(string.Empty);
                    }
                }
                var msgType = xmldoc.SelectSingleNode("/xml/MsgType");

                if (msgType != null)
                {
                    switch (msgType.InnerText)
                    {
                    case "event":
                        responseContent = EventHandle(xmldoc);     //事件处理
                        break;

                    case "text":
                        responseContent = await TextMsgHandleAsync(xmldoc);     //接受文本消息处理

                        break;

                    case "image":
                        responseContent = ImageMsgHandle(xmldoc);     //图片消息
                        break;

                    case "voice":
                        responseContent = await VoiceMsgHandleAsync(xmldoc);     //语音消息

                        break;

                    default:
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex, "回复消息发生异常,异常信息:" + ex.Message);
            }
            return(responseContent);
        }
Ejemplo n.º 10
0
        public static void Test()
        {
            LogHelper.ConfigureLogging(builder => builder.AddLog4Net());

            Logger.Info("info message");
            Logger.Debug("debug message");
            Logger.Trace("Trace message");
            Logger.Error("Error messsage");
            Logger.Fatal("Fatal message");

            log4net.LogManager.GetLogger("testTtTLogger").Info("121313");
        }
Ejemplo n.º 11
0
        public static string ReturnMessage(string postStr)
        {
            var responseContent = "";

            try
            {
                var xmldoc = new XmlDocument();
                xmldoc.LoadXml(postStr);

                var msgId = xmldoc.SelectSingleNode("/xml/MsgId")?.InnerText;
                if (msgId.IsNullOrEmpty())
                {
                    var firewall = RedisManager.GetFirewallClient($"wechatMsgFirewall-{msgId}", TimeSpan.FromSeconds(2));
                    if (!firewall.Hit())
                    {
                        return(string.Empty);
                    }
                }
                var msgType = xmldoc.SelectSingleNode("/xml/MsgType");

                if (msgType != null)
                {
                    switch (msgType.InnerText)
                    {
                    case "event":
                        responseContent = EventHandle(xmldoc);     //事件处理
                        break;

                    case "text":
                        responseContent = TextMsgHandle(xmldoc);     //接受文本消息处理
                        break;

                    case "image":
                        responseContent = ImageMsgHandle(xmldoc);     //图片消息
                        break;

                    case "voice":
                        responseContent = VoiceMsgHandleAsync(xmldoc);     //语音消息
                        break;

                    default:
                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("发生异常,异常信息:" + ex.Message + ex.StackTrace);
            }
            return(responseContent);
        }
Ejemplo n.º 12
0
        public static void MainTest()
        {
            var abc = "1233";

            LogHelper.LogFactory.WithMinimumLevel(LogHelperLevel.Info);

            Logger.Debug($"12333 {abc}");
            Logger.Trace("122334334");
            Logger.Info($"122334334 {abc}");

            Logger.Warn("12333");
            Logger.Error("122334334");
            Logger.Fatal("12333");
        }
Ejemplo n.º 13
0
        public static void StorageProcusureTest()
        {
            using (var conn = new SqlConnection(ConfigurationHelper.ConnectionString("TestDb")))
            {
                //var result = conn.Execute("TestSP", CommandType.StoredProcedure, new { aaa = 123, bbb = "12333" });
                //var dataTable = conn.ExecuteDataTable("SELECT * FROM TestTable");

                try
                {
                    conn.Execute(@"INSERT INTO [dbo].[TestTable]
                            (
                            [Token],
                        [CreatedTime]
                        )
                    VALUES
                        (@Item1, --Token - nvarchar(200)
                    @Item2-- CreatedTime - datetime
                        )", GetValueTupleParam());
                }
                catch (NotSupportedException ex)
                {
                    Logger.Error(ex);
                }

                //conn.Execute(@"INSERT INTO [dbo].[TestTable]
                //            (
                //            [Token],
                //        [CreatedTime]
                //        )
                //    VALUES
                //        (@Token, --Token - nvarchar(200)
                //    @CreatedTime-- CreatedTime - datetime
                //        )", new TestStruct
                //{
                //    Token = Guid.NewGuid().ToString("N")+" execute-struct",
                //    CreatedTime = DateTime.Now
                //});

                var i = conn.ExecuteDataTable("SELECT * FROM TestTable").Rows.Count;
            }
        }
        public void OnAuthorization(AuthorizationFilterContext filterContext)
        {
            var model = new WechatMsgRequestModel
            {
                Nonce         = filterContext.HttpContext.Request.Query["nonce"].FirstOrDefault(),
                Signature     = filterContext.HttpContext.Request.Query["signature"].FirstOrDefault(),
                Timestamp     = filterContext.HttpContext.Request.Query["timestamp"].FirstOrDefault(),
                Msg_Signature = filterContext.HttpContext.Request.Query["msg_signature"].FirstOrDefault()
            };

            //验证
            if (!CheckSignature(model))
            {
                Logger.Error("微信请求签名验证不通过");
                filterContext.Result = new ContentResult
                {
                    Content     = "微信请求验证失败",
                    StatusCode  = 401,
                    ContentType = "text/html"
                };
            }
        }
Ejemplo n.º 15
0
        public static void MainTest()
        {
            var abc = "1233";

            LogHelper.ConfigureLogging(builder =>
            {
                builder
                .AddLog4Net()
                //.AddSerilog(loggerConfig => loggerConfig.WriteTo.Console())
                .WithMinimumLevel(LogHelperLogLevel.Info)
                .WithFilter((category, level) => level > LogHelperLogLevel.Error && category.StartsWith("System"))
                .EnrichWithProperty("Entry0", ApplicationHelper.ApplicationName)
                .EnrichWithProperty("Entry1", ApplicationHelper.ApplicationName, e => e.LogLevel >= LogHelperLogLevel.Error)
                ;
            });

            Logger.Debug("12333 {abc}", abc);
            Logger.Trace("122334334");
            Logger.Info($"122334334 {abc}");

            Logger.Warn("12333, err:{err}", "hahaha");
            Logger.Error("122334334");
            Logger.Fatal("12333");
        }