(一)實驗過程
為了敘述方便,舉個具體例子做個實驗:應用程序為/test,數據庫存放在D:wwwrootestdatadb1.mdb,我們已經知道在ASP.Net中是以一個叫做;ASPNET虛擬用戶的身份訪問數據庫的,我們需要給這個賬戶以特定的NTFS權限才能使ASP.Net程序正常運行。
為了得到最嚴格的NTFS權限設置,實驗開始時我們給程序最低的NTFS權限:
a)D:wwwrootestdata文件夾的給用戶ASPNET以如下權限:
答應拒絕
完全控制 □□
修改□□
讀取及運行√□;
列出文件夾目錄;√□
讀取√□
寫入□□
b)D:wwwrootestdatadb1.mdb文件本身給用戶ASPNET以如下權限:
√答應將來自父系的可繼續權限傳播給該對象
1.1對於某個只包含有"SELECT"命令的ASPx程序,上述權限設置運行時無障礙,即:上述權限已經滿足這類程序的運行了。
1.2對於包含有"UPDATE""INSERT""UPDATE"等命令的ASPx程序,;
(a)假如db1.mdb是Access2000創建的數據庫,出現如下錯誤:
"/test"應用程序中的服務器錯誤。
---------------------------------------
MicrosoftJet數據庫引擎打不開文件'D:wwwrootestdata'。 它已經被別的用戶以獨占方式打開,或沒有查看數據的權限。
說明:執行當前Web請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的具體信息。
異常具體信息:System.Data.OleDb.OleDbException:MicrosoftJet數據庫引擎打不開文件'D:wwwrootestdata'。它已經被別的用戶以獨占方式打開,或沒有查看數據的權限。
(b)假如db1.mdb是AccessXP創建的數據庫,出現如下錯誤:
"/test"應用程序中的服務器錯誤。
----------------------------------------------
操作必須使用一個可更新的查詢。
說明:執行當前Web請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的具體信息。
異常具體信息:System.Data.OleDb.OleDbException:操作必須使用一個可更新的查詢。
(c)原因初步分析:因為包含有"UPDATE""INSERT""UPDATE"等命令,需要對數據庫文件本身進行寫入操作,所以上述權限不能滿足此需求,我們需要進一步放開權限。
我們放開一些權限,
a)D:wwwrootestdata文件夾不變:
b)D:wwwrootestdatadb1.mdb文件本身給用戶ASPNET以如下權限:
答應拒絕
完全控制 □□
修改□□
讀取及運行√□;
列出文件夾目錄;√□
讀取√□
寫入√□轉載保留:。