我尝试了在Global.asax文件中定时执行程序
但是虚拟路径的问题给我卡住了
谁有成功的经验可以传授下
希望大哥们成功过再说。。别到处复制黏贴 谢谢

解决方案 »

  1.   


    如果你在Global.asax中Application_Start(ByVal sender As Object, ByVal e As EventArgs)事件中进行了对数据库的操作.
    在此分两种情况讨论:1.你在Web.config设置的数据库路径是从首目录开经的,如果用户是也从首目录访问你的网站的,那么你很幸运。但是如果用户是从其它目录
    访问你的网站的。那么你的连接字符串就会出错。2.你在Web.config设置的数据库路径不是从首目录开经的,那么结论跟上面的相反。要解决这个问题我们可以写两个连接字符串,一个是从首目录开始的,一个是从子目录开始的。在对数据
    进行操作时,预先用第一个连接字符串打开数据。如果打开成功,就证明第一个是正确的。否则就用第二个。
    最好就是使用try处理了.其实还有更简单的处理办法更符合asp.net 运行方式的处理办法你可以写一个接口实现Ihttphandler
    然后对.mdb结尾的请求进行处理,将其引导到错误页webconfig    <httpHandlers>
          <add verb="*" path="*.mdb" type="ABC.MDBHttpHandler" />
        </httpHandlers>  
    using System;
    using System.Collections;
    using System.Web;
    using System.Web.UI;
    using System.Web.Handlers;
    using System.Web.SessionState;namespace ABC
    {
        public class MDBHttpHandler : IHttpHandler, IRequiresSessionState
        {
            public void ProcessRequest(HttpContext context) 
            {
              context.Response.Redirect("/error.aspx",true);
            }
            
            public bool IsReusable
            {
                get
                {
                    return true;
                }
            }
        }
    }
     
    基本上就这样就ok 
      

  2.   

    http://blog.csdn.net/qdzx2008/archive/2005/10/04/495209.aspx
      

  3.   

    在Global.asax里面调用一个类
    类里面 写个线程,,设置多久自动生成就可以了
    不难
      

  4.   

     protected void Application_BeginRequest(object sender, EventArgs e)
            {   
              
                if (!isStartBuilder)
               {                Test.BuilderHtml bb = new zzy.Test.BuilderHtml();
                  bb.StartAutoBuilder();
                }
               
            }
     public  class BuilderHtml
        {        public string RootUrl = WebUnits.WebRootUrl;
            public static string Serverpath = HttpContext.Current.Server.MapPath("/");
            public void StartAutoBuilder()
            {
                WriteLog(string.Format("StartAutoBuilder"));
                ThreadStart threadStart = new ThreadStart(AutoBuilder);
                Thread th = new Thread(threadStart);
                th.Start();
            }        /// <  summary>
            ///10分钟生成一次
            /// <  /summary>
            public void AutoBuilder() 
            {
                int fasterBuilderTime = Int32.Parse(ConfigurationSettings.AppSettings["FasterBuilderTime"]);
                Thread.Sleep(fasterBuilderTime);
                BuildMethod();
            }
            private void BuildMethod()
            {
                int sleepTime = Int32.Parse(ConfigurationSettings.AppSettings["BuilderTime"]);
                while (true)
                {
                    Thread.Sleep(sleepTime);
                    BuildAllHtmlPage();
                }
            }        /// <summary>
            /// 生成模块首页静态页面
            /// </summary>
            public void BuildAllHtmlPage()
            {
                ThreadStart threadStart = new ThreadStart(BuildHtmlPage);
                Thread th = new Thread(threadStart);
                th.Start();
            }        private void BuildHtmlPage()
            {
                string[] htmlPages = ConfigurationSettings.AppSettings["HomeHtml"].ToString().Split(';');
                for (int i = 0; i < htmlPages.Length; i++)
                {
                    string config = htmlPages[i];
                    string[] arr = config.Split(',');
                    string url = RootUrl + arr[0];
                    string filePath = Serverpath + arr[1];
                    try
                    {
                        DBResult result = HtmlBuilder.CreateHtml(url, filePath);
                        if (!result.Succeed)
                            WriteLog(string.Format("生成失败:{0},{1},原因:{2}", url, filePath, result.Message));
                    }
                    catch (Exception ex)
                    {
                        WriteLog(string.Format("生成失败:{0},{1},原因:{2}", url, filePath, ex.Message));
                    }
                }
            }
            public static void WriteLog(string log)
            {
                try
                {
                    string fileName = Serverpath + "log.txt";
                    if (File.Exists(fileName))
                    {
                        using (StreamWriter sw = new StreamWriter(fileName, true))
                        {
                            sw.WriteLine(
                                string.Format("\r\n==[{0}]===================================\r\n{1}", DateTime.Now, log));
                            sw.Close();
                        }
                    }
                }
                catch (Exception )
                {
                }
            }
        }