世界奇事,ASP.NET利用global.asax自动执行事件半成功

lizhaokai001 2010-11-02 10:24:33
做一个采集功能,想用间隔一段时间自动执行,利用global.asax后台执行向磁盘写入文件成功,可定时向数据库插入数据却没反应,希望各位大侠指教
...全文
188 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhaokai001 2010-11-03
  • 打赏
  • 举报
回复
看了,做了,依然无法插入
lizhaokai001 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 chen_ya_ping 的回复:]

就算是20分钟没有人访问的话,我想,你的程序时写在那个application_start中的,如果你的网站20分钟无人访问,应用程序池被回收,那下次启动的时候,这个timer不是也启动上来了吗
[/Quote]

如果等到下次启动时,那采集的信息已经不是即时的信息了
lizhaokai001 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 chen_ya_ping 的回复:]

引用 11 楼 lizhaokai001 的回复:

知道为什么不能添加成功了,是因为Global.asax 文件中无法使用Server.MapPath,换成sqlserver数据库就可以了。

网站没有人访问20分钟,应用程序池就回收了.

你这么作肯定不可靠的.

那应该怎么做才好呢

那要不自己写个小程序,然后定时的访问你的网站。这样的话,你的网站就不会出现啊无人访问的……
[/Quote]

这个我也想到了,但是租用的空间,不能控制服务器,怎么个定时访问法呢
lizhaokai001 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 liyingjun123 的回复:]

学习~~
[/Quote]
这个我也想到了,但是租用的空间,不能控制服务器,怎么个定时访问法呢
chen_ya_ping 2010-11-03
  • 打赏
  • 举报
回复
就算是20分钟没有人访问的话,我想,你的程序时写在那个application_start中的,如果你的网站20分钟无人访问,应用程序池被回收,那下次启动的时候,这个timer不是也启动上来了吗
chen_ya_ping 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 lizhaokai001 的回复:]

知道为什么不能添加成功了,是因为Global.asax 文件中无法使用Server.MapPath,换成sqlserver数据库就可以了。

网站没有人访问20分钟,应用程序池就回收了.

你这么作肯定不可靠的.

那应该怎么做才好呢
[/Quote]
那要不自己写个小程序,然后定时的访问你的网站。这样的话,你的网站就不会出现啊无人访问的情况了。
lizhaokai001 2010-11-03
  • 打赏
  • 举报
回复
知道为什么不能添加成功了,是因为Global.asax 文件中无法使用Server.MapPath,换成sqlserver数据库就可以了。

网站没有人访问20分钟,应用程序池就回收了.

你这么作肯定不可靠的.

那应该怎么做才好呢
kkbac 2010-11-03
  • 打赏
  • 举报
回复
测试了下lz的代码.

protected int i;
protected void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
System.Timers.Timer myTimer = new System.Timers.Timer(10000);//现在间隔是10秒
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(WriteFile);
myTimer.Interval = 10000;
myTimer.Enabled = true;
myTimer.Start();
i = 0;
}
public void WriteFile(object sender, EventArgs e)
{
Data.ExecuteNonQuery(string.Format("insert into [test] ([k], [v]) values ({0}, {0})",i));
i++;
}
/**
数据库表"test"里面正常10秒添加新数据.
**/
mashimaro_ra 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 winner2050 的回复:]

网站没有人访问20分钟,应用程序池就回收了.

你这么作肯定不可靠的.
[/Quote]
这个可以在iis中配置的,默认好像是1400左右 具体记不得了
workhard_success 2010-11-03
  • 打赏
  • 举报
回复
感觉你的Timer是一个事件内部变量,如果时间执行完毕后, 你的Timer变量,是不是很有可能就被回收掉呢?在下愚见,请赐教!
mayanly 2010-11-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 winner2050 的回复:]
网站没有人访问20分钟,应用程序池就回收了.

你这么作肯定不可靠的.
[/Quote]是这样的吗?
winner2050 2010-11-03
  • 打赏
  • 举报
回复
网站没有人访问20分钟,应用程序池就回收了.

你这么作肯定不可靠的.
kkbac 2010-11-02
  • 打赏
  • 举报
回复
lizhaokai001 2010-11-02
  • 打赏
  • 举报
回复
在按钮事件里可以成功添加的
hch126163 2010-11-02
  • 打赏
  • 举报
回复
调试一下,看看你保存到数据库的方法有没问题
lizhaokai001 2010-11-02
  • 打赏
  • 举报
回复
代码如下:
private static readonly string filePath = @"D:\Temp\";
public hxsd myhxsd = new hxsd();
protected void Application_Start(object sender, EventArgs e)
{
System.Timers.Timer myTimer = new System.Timers.Timer(10000);//现在间隔是10秒
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(WriteFile);
myTimer.Interval = 10000;
myTimer.Enabled = true;
myTimer.Start();
}

public static void WriteFile(object sender, EventArgs e)
{

//if (!Directory.Exists(filePath + DateTime.Now.ToFileTime().ToString()))//判断文件夹是否存在
//{
// Directory.CreateDirectory(filePath + DateTime.Now.ToFileTime().ToString());//不存在则创建文件夹
//}
osdData.ExecuteNonQuery("INSERT INTO Article (Title) VALUES (插入成功)");
}

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧