博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Global.asax中的操作数据库代码无法执行
阅读量:5030 次
发布时间:2019-06-12

本文共 1430 字,大约阅读时间需要 4 分钟。

本人最近在做一个基于Access数据库的Web应用程序,为了实现一个定时更新数据库的需求,我在Global.asax中的Application_Start函数里写了个计时器,

 

void Application_Start(object sender, EventArgs e)    {        // 在应用程序启动时运行的代码        System.Timers.Timer atimer = new System.Timers.Timer(60000);        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(60000);        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的相应用户拥有足够的权限来操作数据库,尤其是“修改”权限,这是比“写入”更高的权限。另外,计时器间隔事件处理函数中出现的异常无法抛出。

转载于:https://www.cnblogs.com/efanscai/p/3388159.html

你可能感兴趣的文章
mpvue学习笔记
查看>>
[LeetCode] 628. Maximum Product of Three Numbers_Easy
查看>>
[Java in NetBeans] Lesson 06. Custom classes
查看>>
[AngularFire2 & Firestore] Example for collection and doc
查看>>
[Javascript] The "this" keyword
查看>>
ElasticSearch-5.3.1集群环境搭建,安装ElasticSearch-head插件,安装错误解决
查看>>
sharepoint Report使用共享数据源部署报错
查看>>
C++ Primer 5th 第16章 模板与泛型编程
查看>>
22个Web 在线编辑器[转]
查看>>
解决“The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path”问题...
查看>>
GitHub本地上传代码教程
查看>>
bzoj1045 [HAOI2008] 糖果传递
查看>>
关于java中任意对象强制转换为接口类型的问题
查看>>
.Net之路(十一)StringBuilder和string
查看>>
删除链表中重复的节点
查看>>
移动端的推拉效果导航菜单-支持响应式及其多层菜单
查看>>
Linux基础命令总结
查看>>
py 的第 21 天
查看>>
pyqt5在textBrowser添加文本并自动滑动到底
查看>>
emmc基础技术8:操作模式2-device identification mode
查看>>