Ejemplo n.º 1
0
        public override void Configure(Container container)
        {
            //Permit modern browsers (e.g. Firefox) to allow sending of any REST HTTP Method
            base.SetConfig(new EndpointHostConfig
            {
                GlobalResponseHeaders =
                {
                    { "Access-Control-Allow-Origin",  "*"                               },
                    { "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
                },
            });

            //请求过滤器
            this.RequestFilters.Add((req, res, reqDto) =>
            {
                //验证权限

                //记录来源ip,时间,原始内容
                //string reqKey = req.Headers.Get("RequestIdentity");
                string reqIp      = req.UserHostAddress;
                string reqMethod  = req.OperationName;
                string reqcontent = SerializerCollection.JsonSerializer.Serialize(reqDto);
                //记录信息
                LoggerIoc.GetLogger().Write(LoggerLevel.Info, "00000000", reqMethod, reqcontent, reqIp);
            });

            //响应过滤器
            this.ResponseFilters.Add((req, res, resDto) =>
            {
                //记录响应时间 和 响应 内容
                string resContent = SerializerCollection.FrameJsonSerializer.Serialize(resDto);
                LoggerIoc.GetLogger().Write(LoggerLevel.Info, "11111111", string.Empty, resContent);
            });
        }
Ejemplo n.º 2
0
        public bool SetWithLock <T>(string key, T value, TimeSpan expiresIn)
        {
            //指定格式生成锁Key
            string lockKey = string.Format("{0}{1}", key, LockSuffix);
            //为轮训增加累加器
            int ax = 0;

            //轮询锁
            while (!MemcachedClient.Store(StoreMode.Add, lockKey, 1))
            {
                ax++;
                if (ax == 5)
                {
                    //5次拿不到,放弃。。。
                    LoggerIoc.GetLogger().Write(LoggerLevel.Error, "2cf19048128945da95e161232b3f48ce", "Set轮训锁", "5次未获取Set轮训锁");
                    break;
                }
                //中断再retry
                Thread.Sleep(50);
            }

            try
            {
                //覆盖式更新
                return(MemcachedClient.Store(StoreMode.Set, key, value, expiresIn));
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                //释放
                MemcachedClient.Remove(lockKey);
            }
        }