예제 #1
0
파일: Rule.cs 프로젝트: fuqi0340/StaticHtml
 /// <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);
         }
     }
 }
예제 #2
0
 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\"]");
     }
 }
예제 #3
0
파일: Rule.cs 프로젝트: fuqi0340/StaticHtml
        /// <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);
            }
        }
예제 #4
0
        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());
            }
        }
예제 #5
0
 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());
     }
 }
예제 #6
0
        /// <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);
        }