代码之家  ›  专栏  ›  技术社区  ›  AJF

经典的ASP-500内部服务器错误[重复]

  •  -1
  • AJF  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我意识到这个问题已经问了好几遍了,但是在看了前面问题的指导之后,我仍然没有解决的办法

    一个正在工作的经典asp应用程序被转移到另一个服务器,并且确实在iis管理器(版本8.5.9600)中。index.asp页面工作正常,但当我们选择两个选项之一时,它们都会提供“500-内部服务器错误”。子页位于同一文件夹中。我设置浏览器以提供更多详细信息,这些信息说明

    Microsoft OLE DB Provider for ODBC Drivers error '80004005'
    
    [Microsoft][ODBC Driver Manager] Data source name not found and no default 
    driver specified
    

    主页面上的两个选项询问access数据库,我已确保access安装在服务器上,并且access文件位于正确的位置

    我发现这可能与系统dsn向access数据库提供odbc有关,在asp文件中我发现了以下内容

    <%
    accessdb="files\retirals"
    DSN = "DRIVER={Microsoft Access Driver (*.mdb)};"
    DSN = DSN & "DBQ=" & Server.Mappath(accessdb)
    Set DBConnection = Server.CreateObject("adodb.connection")
    Set rs=Server.CreateObject("ADODB.RecordSet")
    DBConnection.Open DSN
    

    但是,我确信前一台服务器上没有安装系统DSN(我无法访问前一台服务器)。稍微让人困惑的是,子组件使用不同的access数据库,但每个组件都声明相同的dsn值

    DBConnection.Open DSN
    

    我尝试使用“mcirosft访问驱动程序”设置一个名为“dsn”的系统dsn,但它仍然声明“找不到数据源名称,并且没有指定默认驱动程序”。之后我也在iis中重新启动了网站。但这仍然没有帮助。请问我该如何解决?

    1 回复  |  直到 6 年前
        1
  •  2
  •   John    6 年前

    您收到此特定错误消息的最可能原因是Jet数据库的驱动程序(具有MDB扩展名的Access文件)仅为32位,您需要在应用程序池中启用32位应用程序。

    我建议使用oledb驱动程序而不是odbc驱动程序,连接字符串如下所示

    DBConnection.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & Server.Mappath(accessdb)
    

    我注意到您没有在 accessdb ,就这条路。你需要文件名。还要记住.mdb是在access中创建的数据库的旧格式。最新版本的Access将以较新的.accdb格式保存文件,除非您在保存时指定要使用MDB。对于accdb文件,您需要一个默认不安装在windows上的其他驱动程序,您需要自己安装它。

    您应该找到有关堆栈溢出的其他问题,这些问题将更详细地涵盖所有这些问题。