自從裝了64位的Vista之後,問題就一個一個來。現在就連IIS(7.0.6000.16386)裡運行一個簡單的ASP程式都出問題了。在開始本文之前,我想糾正一些錯誤認識:
Vista + IIS7支援Asp+Access無需更改應用程式集區。
Elvas實踐證明,使用預設的DefaultAppPool即可,你甚至可以停用Classic.NET AppPool。
Windows Vista Ultimate版本含有IIS,可以安裝IIS。
Windows Vista Ultimate:就是中文翻譯的Vista旗艦版,也有人稱它為“終極版”。這個版本在Windows Vista 涵蓋了Vista開發的幾乎所有功能,也是功能最強大的Vista版本。Elvas正在使用的即是Windows Vista Ultimate,所以一切的Q&A將基於64位Windows Vista Ultimate展開。
Question 1:為什麼系統中找不到Internet資訊服務(IIS)管理器?
Answer 1:系統預設不安裝,需要手動安裝IIS。步驟:“控制台\程式\開啟或關閉Windows功能”選擇你需要的功能。(如果對自己的機器有信心可以選擇所有的功能。)
Question 2:訪問已經添加並運行服務的網站,為什麼返回了“An error occurred on the server when processing the URL. Please contact the system administrator”錯誤?
Answer 2:這是由你所執行的程式某處存在錯誤而產生的,並且IIS7設定中預設不向用戶端瀏覽器發送具體的錯誤資訊。所以你需要在IIS中設定一下:左側選中網站目錄,“功能視圖”中“IIS”選擇“ASP”開啟,展開“編譯\調試屬性”並設定“將錯誤發送到瀏覽器”為True,再將“行為”中的“啟用父路徑”設定為True。
Question 3:提示“不允許的父路徑。”
Answer 3:同2,在“ASP”設定中的將“行為”中的“啟用父路徑”設定為True。
Question 4:“未指定提供者,也沒有指派的預設提供者。”
Answer 4:這就是一個典型的64位系統問題,由於64位作業系統不支援Microsoft OLE DB Provider for Jet驅動程式,也不支援更早的Microsoft Access Driver (*.mdb)方式串連。這一點在Microsoft的網站上得到了證實。用於 Access 和 Excel 資料庫的 Microsoft OLE DB Provider for Jet 在 64 位元版本中不可用,也就是說,如下兩種連接字串都已經無法正常工作了:
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath(db)
"driver=Microsoft Access Driver (*.mdb);DBQ="&Server.MapPath(db)
既然這樣,就只能使用一個辦法,將IIS的運行環境設定為32位:“伺服器/應用程式集區/DefaultAppPool/設定應用程式集區預設設定/(常規)/啟用32位應用程式/True”。
另外一點,SQL資料庫連結是可以在64位機上啟動並執行,連結字串為:"PROVIDER=SQLOLEDB;DATA SOURCE="&SqlLocalName&";UID="&SqlUsername&";PWD="&SqlPassword&";DATABASE="&SqlDatabaseName
Question 5:“磁碟或網路錯誤”、“未指定的錯誤” 、“Microsoft JET Database Engine 錯誤 '80004005' 未指定的錯誤”、“Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005' [Microsoft][ODBC Microsoft Access 驅動程式] 磁碟或網路錯誤”。
Answer 5:產生這樣的錯誤是由於IIS沒有讀取IE緩衝的許可權而引起的。(錯誤取決於你使用哪種方式串連Access資料庫)只需設定緩衝目錄的許可權即可,開啟檔案夾:(注意,AppData 檔案夾是隱藏檔案夾)
“C:\Windows\ServiceProfiles\NetworkService\AppData\Local\”,在Temp上點擊右鍵,依次點擊“屬性”、“安全”、“編輯”、“添加”,然後輸入“Authenticated Users”並點擊確定。然後在Authenticated Users的許可權裡面,設定“完全控制”和“修改”的許可權。
Question 6:Q4、Q5都已經解決,但是仍然提示錯誤。
Question 6:重新安裝或註冊機器的Access驅動,msadds.dll(OLE DB Data Shape)。在運行命令裡面輸入:(64位“REGSVR32 "C:\Program Files (x86)\Common Files\System\Ole DB\MSDASQL.DLL"”);(32位“REGSVR32 "C:\Program Files\Common Files\System\ole db\MSDASQL.DLL"”)
Question 7:還是沒有辦法解決1-6的問題。
Answer 7:很抱歉,對於這方面的問題,Elvas告訴你國內應該沒有人可以協助你了。(-_-)