/// <summary> /// 重写 控制器的 action 执行方法 /// </summary> /// <param name="context"></param> public override void OnActionExecuting(ActionExecutingContext context) { //注意 web api 在本设计中 ,不让设置 页面标识 Cookie 。增加这个Cookie 是为了防止采集和蜘蛛 if (context.Controller is BaseApiController) { base.OnActionExecuting(context); return; } //1监测是否有了必须的Cookie标识 如果没有 那么追加 var cookieWebbrowserSign = context.HttpContext.GetCookie <string>(Contanst.Cookie_Key_BrowserSign); if (string.IsNullOrEmpty(cookieWebbrowserSign)) { cookieWebbrowserSign = string.Concat(WorkContext.SiteName, "|", DateTime.Now.ToOfenTimeString()); string encodedSign = LZString.Compress(cookieWebbrowserSign, true); //将加密后的cookie 写入到响应客户端 string domain = null; //string webStatus = ConfigHelper.AppSettingsConfiguration.GetConfig("WebStatus"); //判断是否为正式环境 if (WorkContext.HostingEnvironment.IsProduction()) { //正式环境cookie 过期为1天 domain = Contanst.Global_Site_Domain_Cookie; context.HttpContext.SetCookie <string>(domain, Contanst.Cookie_Key_BrowserSign, encodedSign, 1, true); } else { //测试环境 cookie 不过期 context.HttpContext.SetCookie <string>(domain, Contanst.Cookie_Key_BrowserSign, encodedSign, true); } } base.OnActionExecuting(context); }
public static String CompressToUTF16(String input) { if (input == null) { return(""); } String output = ""; int c; int current = 0; int status = 0; input = LZString.Compress(input); for (int i = 0; i < input.Length; i++) { c = (int)input[i]; switch (status++) { case 0: output += (char)((c >> 1) + 32); current = (c & 1) << 14; break; case 1: output += (char)((current + (c >> 2)) + 32); current = (c & 3) << 13; break; case 2: output += (char)((current + (c >> 3)) + 32); current = (c & 7) << 12; break; case 3: output += (char)((current + (c >> 4)) + 32); current = (c & 15) << 11; break; case 4: output += (char)((current + (c >> 5)) + 32); current = (c & 31) << 10; break; case 5: output += (char)((current + (c >> 6)) + 32); current = (c & 63) << 9; break; case 6: output += (char)((current + (c >> 7)) + 32); current = (c & 127) << 8; break; case 7: output += (char)((current + (c >> 8)) + 32); current = (c & 255) << 7; break; case 8: output += (char)((current + (c >> 9)) + 32); current = (c & 511) << 6; break; case 9: output += (char)((current + (c >> 10)) + 32); current = (c & 1023) << 5; break; case 10: output += (char)((current + (c >> 11)) + 32); current = (c & 2047) << 4; break; case 11: output += (char)((current + (c >> 12)) + 32); current = (c & 4095) << 3; break; case 12: output += (char)((current + (c >> 13)) + 32); current = (c & 8191) << 2; break; case 13: output += (char)((current + (c >> 14)) + 32); current = (c & 16383) << 1; break; case 14: output += (char)((current + (c >> 15)) + 32); output += (char)((c & 32767) + 32); status = 0; break; } } output += (char)(current + 32); return(output); }
public void Compress(LZStringTestCase test) { Assert.That(LZString.Compress(test.Uncompressed), Is.EqualTo(test.Compressed)); }