经典ASP-500内部服务器错误

时间:2018-07-18 08:37:50

标签: ms-access asp-classic dsn

我知道这个问题以前曾被问过几次,但是看了先前问题的指导后,我仍然没有解决办法

一个正常运行的经典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文件位于正确的位置

我发现这可能与System 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 Access驱动程序”设置一个名为“ DSN”的系统DSN,但它仍然指出“未找到数据源名称,也未指定默认驱动程序”。之后,我也重新启动了IIS中的网站。但这仍然无济于事。我该如何解决?

1 个答案:

答案 0 :(得分:1)

收到此特定错误消息的最可能原因是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上未安装的其他驱动程序,您需要自己安装它。

您应该在Stack Overflow上找到其他问题,这些问题会更详细地介绍所有这些问题。