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

2017-03-28 22:50:03
zstmtony
7224
最后编辑: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的配置