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); }); }
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); } }