在windows 2012 R2 64位上部署ASP網站-真正源創文章

2017-03-28 22:50:03
zstmtony
7222
最後編輯:zstmtony 於 2017-03-29 21:08:14

今天將一箇客戶的asp網站從舊的windows Server 2003+iis6轉移 到Windows Server 2012 R2 iis 8.5 遇到不少問題



Microsoft OLE DB Provider for ODBC Drivers 錯誤 "80004005"

[Microsoft][ODBC 驅動程序管理器] 未髮現數據源名稱併且未指定默認驅動程序

/gard.asp,行 7



1.首先是默認文檔第一箇是 html, 將.asp 提到前麵卽可

2.網站數據庫目録和有些上傳目録沒有權限,在Windows設置 Iisuser匿名用戶有相關權限卽可

    數據庫所在目録沒有設置讀寫權限,一般要給來賓帳號權限。

3.打開 index.asp 首頁,還是提示齣錯  

    錯誤號爲 500  ,您查找的資源存在問題,因而無法顯示


   創建一箇新的asp文件,裡麵隻有一句代碼 <%  response.write "OK" %>

   執行正常,説明ASP正常

5.再打開IIS中此網站中asp的設置中的 以下圖的3項設置爲True (記得 調試好後一定要關閉牠,以免被黑客利用)

    併啟用父路徑(默認是開的)


6. 打開index.asp 還是提示500錯誤,沒有詳細的錯誤信息

7. 再打開 錯誤頁

     

     找到 500 這箇錯誤

     


    將 錯誤響應 改爲 詳細錯誤

    

    保存卽可

8. 這時再打開index.asp ,就會顯示 詳細的錯誤信息瞭

    提示具體 的inc/conn.asp 的第7行齣錯

     conn.connectionstring="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("..\db\db.mdb")
    conn.open()

     連接Access數據庫"未髮現數據源名稱併且未指定默認驅動程序"的解決辦法

9. 懷疑是否Access驅動沒有安裝 (可能32位,也可能64位)

     64位Windows繫統連接Access數據庫,程序中可能需要修改Access數據庫連接:
    32位:strConn="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("inc/db.asp")
    64位:strConn="DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" & Server.MapPath("inc/db.asp")

    修改後仍報錯則進入“控製麵闆”-》“管理工具”-》“數據源(ODBC)”查看繫統是否存在Access驅動

     若不存在則需要安裝Microsoft Access驅動程序(下載微軟的驅動重新安裝一下:)
     官方:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=13255
     32位:http://download.microsoft.com/download/E/4/2/E4220252-5FAE-4F0A-B1B9-0B48B5FBCCF9/AccessDatabaseEngine.exe
     64位:http://download.microsoft.com/download/E/4/2/E4220252-5FAE-4F0A-B1B9-0B48B5FBCCF9/AccessDatabaseEngine_X64.exe

  10.髮現還不行,後來髮現原來是 

       64位操作繫統不支持Microsoft OLE DB Provider for Jet驅動程序,也不支持更早的Microsoft Access Driver (*.mdb)方式連接。
      所以,程序裡麵的鏈接字符串不能正常工作。需要修改下IIS的工作環境,改成32位的,在IIS的管理界麵中。

    

      問題原因:
      64位操作繫統不支持Microsoft OLE DB Provider for Jet驅動程序,也不支持更早的Microsoft Access Driver (*.mdb)方式連接。
      所以,程序裡麵的鏈接字符串不能正常工作。需要修改下IIS的工作環境,改成32位的,在IIS的管理界麵中。


      解決方法:
      進入應用程序池中的默認應用程序池 在常規選項中的32位方式啟用就可以瞭:

      


       

       開啟32位應用程序池設爲True卽可

       


到此完全解決瞭

    

2017/03/29 補充

如果 是使用 護衛神主機繫統,在網站管理後颱,還要勾選上 啟動32位應用程序池,否則護衛神的配置會覆蓋IIS的配置