我們知道ASP.NET中使用ADO.NET訪問數(shù)據(jù)庫,通過OleDb的連接可以訪問Access數(shù)據(jù)庫(我們非常常用的低端數(shù)據(jù)庫之一)。本文討論了ASP.NET中可能看到的若干錯誤提示,從中可以發(fā)現(xiàn)Access 2000和Access XP創(chuàng)建的數(shù)據(jù)庫文件在訪問出現(xiàn)錯誤時會給出不太相同的錯誤提示。另一個要點是,希望通過此文,使大家對ASP.NET中Access數(shù)據(jù)庫文件的NTFS權(quán)限設(shè)置得到新的認識。
(一)實驗過程
為了敘述方便,舉個具體例子做實驗:應用程序為/test,數(shù)據(jù)庫存放在D:\wwwroot\test\data\db1.mdb,我們已經(jīng)知道在ASP.NET中是以一個叫做ASPNET虛擬用戶的身份訪問數(shù)據(jù)庫的,我們需要給這個賬戶以特定的NTFS權(quán)限才能使ASP.NET程序正常運行。
為了得到***嚴格的NTFS權(quán)限設(shè)置,實驗開始時我們給程序******的NTFS權(quán)限:
a)D:\wwwroot\test\data\文件夾的給用戶ASPNET以如下權(quán)限:
允許 拒絕
完全控制 □ □
修改 □ □
讀取及運行 √ □
列出文件夾目錄 √ □
讀取 √ □
寫入 □ □
b)D:\wwwroot\test\data\db1.mdb文件本身給用戶ASPNET以如下權(quán)限:
√ 允許將來自父系的可繼承權(quán)限傳播給該對象
1.1對于某個只包含有“SELECT”命令的aspx程序,上述權(quán)限設(shè)置運行時無障礙,即:上述權(quán)限已經(jīng)滿足這類程序的運行了。
1.2對于包含有“UPDATE”“INSERT”“UPDATE”等命令的aspx程序
(a)如果db1.mdb是Access 2000創(chuàng)建的數(shù)據(jù)庫,出現(xiàn)如下錯誤:
“/test”應用程序中的服務器錯誤