windows - 使用 ADO ODBC 上传到服务器时,在 VB.NET WEB APPLICATION 中打开与 MS Access DB 的连接时出错
问题描述
我有一个新应用程序上传到试图读取 MS Access DB 的 Windows 服务器,但出现错误:
错误 [IM002] [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序
跟踪显示我在尝试打开连接时遇到错误。
这是我在 Visual Studio 2019 中的第一个 WEB 应用程序。我还有其他 VS WEBSITE 应用程序也以相同的方式读取 DB。这些工作只需引用 ADODB.DLL,然后将 ADODB.DLL 文件放在已发布网站的 BIN 文件夹中即可。
我通过在我的一个网站应用程序中打开/读取相同的数据库来验证数据库是否具有所有适当的权限和连接字符串。没问题。我的 WEBSITE 应用程序和我的 WEB APPLICATION 都使用附加到项目的完全相同的类模块来读取数据库。
因此,唯一的区别似乎是一个是 WEB 应用程序(带有已编译的代码隐藏),另一个是一个网站(带有未编译的代码)。但同样,数据库是在附加到项目的相同类模块中打开的。
我注意到 VS 中的 PUBLISH 功能似乎忽略了我的 bin 文件夹中的 ADODB.DLL 文件(即即使引用了它也不会将其发布到服务器)。但即使我手动将 DLL 上传到服务器的 BIN 文件夹,我也会收到错误消息。
我的服务器支持人员说我需要添加一个 System.DSN 来访问数据库。我试过了(可能做错了),但没有奏效。鉴于我在我的网站应用程序中以相同的方式读取数据库,这似乎是错误的。
因此,当在 Web 应用程序中访问 ADODB.DLL 时,“感觉就像”已发布的 Web 应用程序 DLL 找不到 ADODB.DLL。我应该把它放在不同的位置还是以不同的方式发布?
帮助?
解决方案
好吧,好吧,所以该网站在本地工作。
您必须处理两个问题。首先,网站很有可能以 x64 位运行。因此,该网站需要安装 x64 位版本的 Access 数据库引擎 (ACE)。
换句话说,目标网站需要安装对 Access 的支持,而现在大多数网站默认以 x64 位运行
而且我相信您需要的不仅仅是安装的 ADO .dll。如果您使用 mdb 文件,则安装 JET x32 的机会相当高。但如果 Web 服务器是 x64 位,那么您需要在该服务器上安装 x64 位 ACE。这个:
https://www.microsoft.com/en-us/download/details.aspx?id=54920
从上面确保您选择了正确的 x64 位,或者您可以强制网站以 x32 位运行 - 但这通常是一个问题。
推荐阅读
- react-native - 导航到下一个屏幕时,所有以前的屏幕都会重新安装 react-navigation 5x
- python - 修复错误“numpy.ndarray”对象没有属性“convert”
- c# - hasura\firebase 的替代方案,但适用于 .net c# stack
- node.js - 使用 NodeJS 在 mssql 中创建嵌套事务
- node.js - 运行 gulp 时出现“AssertionError [ERR_ASSERTION]:必须指定任务函数”
- android - 检测 Android 设备是否可折叠?
- percentage - 计算特定值的百分比?
- javascript - 在我的 Firebase 应用程序中写入然后读取数据的推荐方法是什么?
- react-native - 有没有办法把 `options` 变成和 `navigationOptions` 一样的功能呢?
- udp - lwIP telnet 连接的密码保护