如果你在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; } } } }
如果你在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
类里面 写个线程,,设置多久自动生成就可以了
不难
{
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 )
{
}
}
}