Global.asax中的操作数据库代码无法执行
本人最近在做一个基于Access数据库的Web应用程序,为了实现一个定时更新数据库的需求,我在Global.asax中的Application_Start函数里写了个计时器,
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
System.Timers.Timer atimer = new System.Timers.Timer();
atimer.Elapsed += timer_execute;
atimer.AutoReset = true;
atimer.Enabled = true;
}
并在计时器的间隔事件处理函数中加入了一些操作数据库的代码(略),于是在本地IIS上测试通过。上传到服务器上(Windows 2003+IIS6)以后,奇怪的事情发生了,计时器间隔事件处理函数中的操作数据库代码死活不运行,也看不到报错。然后我在网上找啊找,有人说要把Global.asax.cs的代码放到Global.asax中,还有人说要什么整站编译等等,经本人测试均无效。经过N多的尝试和测试(此处省略千百字),终于让我想到了一个揪出异常信息的办法,我将操作数据库的代码直接放到Application_Start中,
void Application_Start(object sender, EventArgs e)
{
// 在应用程序启动时运行的代码
System.Timers.Timer atimer = new System.Timers.Timer();
atimer.Elapsed += timer_execute;
atimer.AutoReset = true;
atimer.Enabled = true;
//执行数据库写入方法
try
{
TimerLogBLL tlbll = new TimerLogBLL();
tlbll.UpdateTimerLog(true);
}
catch (Exception)
{
throw;
}
}
更新服务器上的代码后立马见到了报错信息:
操作必须使用一个可更新的查询
顿时我就茅塞顿开,很显然这是IIS没有权限更新数据库文件,那么计时器间隔事件处理函数中操作数据库的代码显然也是因为这个原因而操作失败,只是它无法抛出异常而已。于是我果断把IUSR的写入权限加到了数据库文件所在的目录,经测试仍然失败,再加修改权限,测试通过,问题解决。
总结:对于使用Access数据库的网站而言,如果使用的是IIS6及以下版本(目前我在IIS7及以上版本没发现有这问题),Global.asax中的代码执行时必须确保IIS的相应用户拥有足够的权限来操作数据库,尤其是“修改”权限,这是比“写入”更高的权限。另外,计时器间隔事件处理函数中出现的异常无法抛出。
Global.asax中的操作数据库代码无法执行的更多相关文章
- 如何在Global.asax中判断是否是ajax请求
今天在一个应用场景中需要在Global.asax中判断一个请求是否是ajax请求,而在ASP.NET MVC中已经提供了一个现成的扩展方法IsAjaxRequest: namespace System ...
- 在Asp.Net的Global.asax中Application_Error跳转到自定义错误页无效的解决办法
在开发Asp.Net系统的时候,我们很多时候希望系统发生错误后能够跳转到一个自定义的错误页面,于是我们经常会在Global.asax中的Application_Error方法中使用Response.R ...
- 在ASP.Net MVC 中,如何在Global.asax中配置一个指向Area内部的默认Route
ASP.Net MVC 中配置Route的时候可以设置一个默认的Route. 比如我要在输入http://localhost的时候默认进入http://localhost/home/index.可以在 ...
- python MySQLdb用法,python中cursor操作数据库(转)
数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_N ...
- 定时发布任务,在global.asax中获取文件的物理路径的方法
如果要把一个相对路径或者虚拟路径映射道服务器的物理路径,通常会使用Server.MapPath()函数,比如将根目录下的html目录映射为物理路径:Server.MapPath("html& ...
- Global.asax 中校验Session
Application 相关的 Application_Init:在每一个HttpApplication实例初始化的时候执行. Application_Disposed:在每一个HttpApplica ...
- 关于在 ASP.NET 的 Global.asax 中 Application_Error 方法内,设置跳转到自定义错误页无效的问题
转自:https://www.cnblogs.com/OpenCoder/p/5070645.html 在 Global.asax 中的 Application_Error 方法中,使用 Respon ...
- 函数体中return下面的代码不执行,但是需要预解析
//函数体中return下面的代码不执行,但是需要预解析 function fn(){ console.log(num);//undefined return function(){ }; var n ...
- .net全局定时定期执行某些操作在Global.asax中具体实现
全局定时定期执行某些操作看起来是多么自动化的一个问题不过在.net的Global.asax文件中稍微配置即可实现,详细配置如下,感兴趣的朋友可以参考下哈 <%@ Application Lang ...
随机推荐
- transition:all 0.5s linear;进度条动画效果 制作原理
Html: <span class="progress"><b ><i></i></b><em>50< ...
- IEBrowse学习笔记
//登录 private void toolStripButton1_Click(object sender, EventArgs e) { //ie.ExecuteScript("aler ...
- 一,彻底理解第一个C语言程序 Hello World
对于初学者来说,第一个程序一般都是hello world,而且是照着书上一点一点敲的.所以,在初学者眼中,敲出来的第一个程序代码不过是一堆看不懂的英语.而事实上,C语言作为一门语言,是有语法的.所以这 ...
- SQL 表锁(转)
其实你可以使用事务处理 比方说在一个字段里面添加一个boolean 的字段当你要处理该字段的时候就 True 哪么别的人都不可以进行操作 如果是False 哪么就可以进行操作--呵可--我是这样的 ...
- CSS 布局总结——变宽度布局
变宽度布局 1-2-1 等比例变宽 总宽度设置 width: 85%; min-width: 650px; (关于IE6的min-width支持,可用) content 设置 width: 66%; ...
- hdu 2037 今年暑假不AC (java)
问题: 此题为贪心算法入门,思路是先将各个时间段依照结束时间进行排序(按结束越早遍历.节目愈多), 再从第一个节目開始,假设下一节目開始时间大于上一节目的開始时间则进行该节目.依次递推. 输入时,要求 ...
- Java网页数据采集器[上篇-数据采集]【转载】
开篇 作为全球运用最广泛的语言,Java 凭借它的高效性,可移植性(跨平台),代码的健壮性以及强大的可扩展性,深受广大应用程序开发者的喜爱. 作为一门强大的开发语言,正则表达式在其中的应用当然是必不可 ...
- Python小工具--删除svn文件
有的时候我们需要删除项目下的svn相关文件,但是SVN会在所有的目录下都创建隐藏文件.svn,手工一个个目录查找然后删除显然比较麻烦.所以这里提供了一个Python小工具用于批量删除svn的相关文件: ...
- C# 循环获取目录
#region 获取目录 /// <summary> /// 获取指定文件夹下所有子目录及文件 /// </summary> /// <param name=" ...
- XtraBackup原理4
MySQL · 答疑解惑 · 物理备份死锁分析 背景 本文对 5.6 主备场景下,在备库做物理备份遇到死锁的case进行分析,希望对大家有所帮助. 这里用的的物理备份工具是 Percona-XtraB ...