说明:执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 操作必须使用一个可更新的查询。 (c) 原因初步分析:因为包含有“UPDATE”“INSERT”“UPDATE”等命令,需要对数据库文件本身进行写入操作,所以上述权限不能满足此需求,我们需要进一步放开权限。 我们放开一些权限, a) D:\wwwroot\test\data\ 文件夹不变: b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限:
允许 拒绝 完全控制 □ □ 修改 □ □ 读取及运行 √ □ 列出文件夹目录 √ □ 读取 √ □ 写入 √ □
|
1.3 放开权限后继续实验, (a) 如果 db1.mdb 是 Access 2000 创建的数据库,出现如下错误:
“/test”应用程序中的服务器错误。 ------------------------------------------ 不能锁定文件。
|
说明:执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。飞,飞Asp技术乐园 异常详细信息: System.Data.OleDb.OleDbException: 不能锁定文件。 (b) 如果 db1.mdb 是 Access XP 创建的数据库,没有出现错误。 (c) 原因初步分析:我们发现在打开 Access 数据库时,同时会在所在目录生成一个同名的 *.ldb 文件,这是一个 Access 的锁定标记。鉴于此,我们猜测,用户 ASPNET 访问 Access 数据库时,也需要生成一个锁定标记,而该目录没有允许其写入,因此出错。至于 Access XP 创建的数据库为什么没有这个错误,原因还不得而知。 我们进一步放开权限, a) D:\wwwroot\test\data\ 文件夹给用户ASPNET以如下权限:
允许 拒绝 完全控制 □ □ 修改 □ □ 读取及运行 √ □ 列出文件夹目录 √ □ 读取 √ □ 写入 √ □
|
b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限:
1.4 继续实验,发现错误已解决,那么上面这个权限就是我们需要放开的“最低权限”。 (a) 如果 db1.mdb 是 Access 2000 创建的数据库,我们会发现一个小问题:生成的 *.ldb 文件不会自己删除,访问后该文件依然存在,但这个问题不会影响 ASP.NET 的正常运行。 (b) 如果 db1.mdb 是 Access XP 创建的数据库,没有出现上面类似问题。 (c) 原因初步分析:我们仅仅是给了 ASPNET 以写入文件夹的权限,没有给它修改的权限,所以文件一旦写入,便无法修改其内容,*.ldb 也就删除不掉了。 如果非要解决这个问题,进一步放开权限为: a) D:\wwwroot\test\data\ 文件夹给用户ASPNET以如下权限:
允许 拒绝 完全控制 □ □ 修改 √ □ 读取及运行 √ □ 列出文件夹目录 √ □ 读取 √ □ 写入 √ □ |
b) D:\wwwroot\test\data\db1.mdb 文件本身给用户ASPNET以如下权限:
1.5 附带着,实验另一种情形:我们把 db1.mdb 在 Access 打开编辑,同时访问 ASP.NET。 (a) 如果 db1.mdb 是 Access 2000 创建的数据库,我们发现并没有出现什么问题。 (b) 如果 db1.mdb 是 Access XP 创建的数据库,出现如下错误:
“/zhao”应用程序中的服务器错误。 ------------------------------------------------ 不能使用 '';文件已在使用中。
|
说明:执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.OleDb.OleDbException: 不能使用 '';文件已在使用中。飞飞A,sp技术乐园 (c) 原因初步分析:Access 数据库是单用户单线程的数据库,我们在 Access 里面打开编辑数据库文件时其实是以当前 Windows 用户(比如Administrator)身份打开数据库,而 ASP.NET 默认使用的是 ASPNET 虚拟用户(隶属于 Users 组),级别低于 Administrator,无法和 Administrator “抢夺”权限,所以出现冲突错误。至于 Access 2000 忽略这个问题的情形我们也不必做讨论了,可能是 Access 2000 没有考虑那么多因素吧。飞飞.Asp技术乐园
[上一页] [下一页] |
|