Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 使用ADO ODBC上载到服务器时,在VB.NET WEB应用程序中打开与MS Access DB的连接时出错_Windows_Vb.net_Ms Access_Web Applications_Adodb - Fatal编程技术网

Windows 使用ADO ODBC上载到服务器时,在VB.NET WEB应用程序中打开与MS Access DB的连接时出错

Windows 使用ADO ODBC上载到服务器时,在VB.NET WEB应用程序中打开与MS Access DB的连接时出错,windows,vb.net,ms-access,web-applications,adodb,Windows,Vb.net,Ms Access,Web Applications,Adodb,我已将一个新应用程序上载到Windows server,该应用程序正在尝试读取MS Access DB,但出现错误: 错误[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序 跟踪显示,我在尝试打开连接时出现错误 这是我在VisualStudio2019中的第一个WEB应用程序。我有其他VS网站应用程序也以同样的方式读取DBs。这些方法只需引用ADODB.DLL,然后将ADODB.DLL文件放在已发布网站的BIN文件夹中即可 通过在我的一个网站应

我已将一个新应用程序上载到Windows server,该应用程序正在尝试读取MS Access DB,但出现错误:

错误[IM002][Microsoft][ODBC驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序

跟踪显示,我在尝试打开连接时出现错误

这是我在VisualStudio2019中的第一个WEB应用程序。我有其他VS网站应用程序也以同样的方式读取DBs。这些方法只需引用ADODB.DLL,然后将ADODB.DLL文件放在已发布网站的BIN文件夹中即可

通过在我的一个网站应用程序中打开/读取同一个数据库,我验证了DB是否具有所有正确的权限和连接字符串。没问题。我的网站应用程序和我的网络应用程序读取数据库时,都附带了与项目相同的类模块

因此,唯一的区别似乎是,一个是WEB应用程序(编译后的代码),另一个是网站(未编译后的代码)。但同样,数据库是在附加到项目的相同类模块中打开的

我注意到,VS中的发布功能似乎忽略了我的bin文件夹中的ADODB.DLL文件(即即使被引用也不会将其发布到服务器)。但是,即使我手动将DLL上传到服务器的BIN文件夹,也会出现错误

我的服务器支持说我需要添加System.DSN来访问数据库。我试过了(可能做得不对),但没用。考虑到我在网站应用程序中以同样的方式读取数据库,这似乎是错误的

因此,在web应用程序中访问ADODB.DLL时,“感觉”发布的web应用程序DLL找不到ADODB.DLL。我应该把它放在不同的地方还是以不同的方式发布


帮助?

好的,这样网站就可以在本地运行了

你必须处理两个问题。首先,有一个很好的可能性,即该网站以x64位运行。因此,该网站需要安装Access数据库引擎(ACE)的x64位版本

换句话说,目标网站需要安装Access支持,而现在大多数网站默认运行x64位

我相信您需要的不仅仅是安装ADO.dll。如果使用mdb文件,则安装JET x32的可能性相当高。但是,如果web服务器是x64位,则需要在该服务器上安装x64位ACE。这个:


从上面确保您选择了正确的x64位,或者您可以强制网站以x32位运行-但这通常是一个问题。

谢谢您的回答。在我尝试实现你的答案之前,请不要介意。但是我很困惑。正如我所说,我有一些旧的应用程序(也在我的本地机器上工作)是VS网站(与当前编译的WEB应用程序(仅VS区别?)相反。但是这些旧的网站确实成功地访问了服务器上的数据库(通过实验,包括我的新应用程序的数据库)。我在同一台本地计算机上定期更新VS中的这些内容,它们会继续工作。VS中的WEB应用是否会使我的应用程序达到64位?我在项目中看不到任何信息。因为默认的WEB VS站点运行方式为x32。在过去,mdb可以工作,因为默认情况下,access数据库引擎已安装在windows的每个副本上ce BEOFRE windows XP。因此,要打开access mdb文件,您无需安装任何东西。如果使用accDB文件,则需要安装ACE数据引擎(默认情况下未安装)。因此,在您的本地计算机上,使用mdb访问文件可以在不安装JET for mdb文件的情况下工作。但是,如果发布到web服务器,则可能以x64运行。JET没有x64位版本,但ACE有一个版本。但ACE必须安装为项目设置?首先,我们必须确定您是否使用mdb文件r一个accDB文件。当然还有设置。您有任何CPU,或x64或x86。在开发过程中,任何都会导致x32进程,因为VS实际上只是x32位应用程序。您可以通过将任何CPU更改为x32/x64来强制项目到x64或x32。因此,如果您使用的是mdb文件,并强制您的项目为x64-您发现它不起作用直到您安装了x64位版本的ACE。ACE可以打开mdb或accDB文件-但预安装的jet数据引擎只能再次以x32位的方式打开mdb。我正在让租用的服务器管理员安装ACE。此外,我注意到与目标asp版本不一致。我的服务器上当前只有4.0及以下版本。VS defaulted到4.7.2,我更改了web配置,使其可以运行,但未能将项目更改为使用4.0。我不知道这是否会导致任何问题,但他们也将安装4.7.2。在确定这些更改是否有效之前,我将保留此问题。问题已解决。感谢帮助。我的服务器管理员安装了64位ACE引擎and应用程序现在正在运行。