/// <summary> /// 生成缓存并保存 /// </summary> /// <param name="context"></param> /// <param name="key"></param> /// <param name="info"></param> private void GenHtmlAndSave(RequestInfo info) { if (!GlobalGenHtmlState.Contains(info.Key)) { try { GlobalGenHtmlState.Add(info.Key); var html = GenHTML.GenHTML(info); if (html != null) { Store.Save(info.Key, html); } else { LogHelp.Warn("getHtml is null " + info.Path); } } catch (Exception e) { throw e; } finally { GlobalGenHtmlState.Remove(info.Key); } } }
public SqlExpire() { if (System.Configuration.ConfigurationManager.ConnectionStrings["SqlExpireConn"] != null) { ConnStr = System.Configuration.ConfigurationManager.ConnectionStrings["SqlExpireConn"].ConnectionString; } else { LogHelp.Warn("SqlExpire config error: 没有数据库连接,staticHtml 会使用数据库连接:System.Configuration.ConfigurationManager.ConnectionStrings[\"SqlExpireConn\"]"); } }
/// <summary> /// 供线程线程调用方法 /// </summary> /// <param name="arg"></param> private void ThreadStart(Object arg) { var req = arg as RequestInfo; try { GenHtmlAndSave(req); } catch (Exception e) { LogHelp.Warn("getHtml error " + e); } }
void context_BeginRequest(object sender, EventArgs e) { var httpApplication = sender as HttpApplication; try { if (!core.IsSkip(httpApplication.Context.Request)) { core.Process(httpApplication.Context); } } catch (Exception ex) { LogHelp.Warn("request process error " + httpApplication.Request.RawUrl + " " + ex.ToString()); } }
public void Init(HttpApplication context) { try { if (htmlSection.Run == "on") { core = HtmlStaticCore.GetInstance(htmlSection); context.BeginRequest += new EventHandler(context_BeginRequest); LogHelp.Info("int success! "); } else { LogHelp.Warn("run off! 请在staticHtml节点中添加属性run=\"on\" on:启用 off:关闭"); } } catch (Exception e) { LogHelp.Error("ini error! " + e.ToString()); } }
/// <summary> /// 根据请求信息,生成实际的sql语句 /// </summary> /// <param name="req"></param> /// <returns></returns> private String buildSql(System.Web.HttpRequest req, CacheInfo info) { String sql = Sql; foreach (var item in Values) { var value = req.QueryString[item]; if (!String.IsNullOrEmpty(value)) { sql = sql.Replace("GET[" + item + "]", value); } else { LogHelp.Warn("SqlExpire error:" + "配置了Get变量" + item + ",在Request.QueryString中确找不到"); } } sql = sql.Replace("[STORETIME]", info.StoreTime.AddSeconds(3).ToString("yyyy-MM-dd HH:mm:ss")); sql = sql.Replace("[LENGTH]", info.Size.ToString()); sql = sql.Replace("[KEY]", info.Key); return(sql); }