我收到错误“'Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册。”在我的测试服务器上。所以我的问题是:
i)我可以添加“'Microsoft.ACE.Oledb.12.0.dll'”的引用来自行投影吗? ii)安全吗? iii)怎么做?
因为我的机器上有最新版本的办公室安装,所以我的本地机器上都有工作。一旦我将我的代码部署到测试服务器,我就会遇到错误。我可能无法在测试服务器上安装Office(由于某种原因)。那么有可能将所有require dll放在项目本身并将其部署到测试服务器吗?
提前致谢。
答案 0 :(得分:1)
为了使用" Microsoft.ACE.OLEDB.12"您需要安装" Microsoft Access数据库引擎2010可再发行组件"
此信息页面位于: http://www.microsoft.com/en-us/download/details.aspx?id=13255
正如@ user1297578非常正确地指出实际下载在这里: http://www.microsoft.com/en-in/download/confirmation.aspx?id=13255
安装完成后,实际程序集称为ACEOLEDB.DLL
,命令提示符下的以下命令将在您的系统上找到它:
C:\>DIR /s/b c:\ACEOLEDB.DLL
c:\Program Files\Common Files\Microsoft Shared\OFFICE14\ACEOLEDB.DLL
作为参考,以下是我从程序收到的错误消息,直到我安装了上述可再发行组件:
Connection Failed.
Error from IDataInitialize::GetDataSource
with connectionString=Data Source=C:\MyFileName.mdb;Mode=Share Deny Write;Provider=Microsoft.ACE.OLEDB.12.0;User Id=admin
OLE DB Error Report:
ErrorRecord:
Hresult=80040154
Description: Class not registered
SQLErrorInfo: No error info available
Source: Microsoft OLE DB Service Components
答案 1 :(得分:0)
如果要使用AccessDatabaseEngine 64和IIS 64位(例如windows 2012 64bit),请按照
您必须在IIS上添加角色asp.net 4.0,.net 4.0
打开IIS管理器
打开网站的应用程序池的advenced设置
启用32位应用程序设置为False(必须执行此操作,或者不将iis设置为32位引擎)
如果您的网站使用.net 4.0,则.NET Framework版本设置为完全版本
<强> 6。 [这是关键点!!!]托管管道模式设置为“经典”
祝你好运:)答案 2 :(得分:0)
您可以通过在安装项目中添加Microsoft Access Database Engine 2010作为先决条件来解决您的问题,以下链接显示了如何执行此操作,但请注意,如果使用VS2017,则路径不同,而VS2017的路径是:
“ C:\ Program Files(x86)\ Microsoft SDKs \ ClickOnce Bootstrapper \ Packages”
不是
“ C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ Bootstrapper \ Packages”
我还注意到,在某些情况下,即使是64位Windows,您也必须在用户计算机上安装“ AccessDatabaseEngine.exe”而不是“ AccessDatabaseEngine_X64.exe”!
此处是包含视频的文章,该视频显示了如何逐步执行所有这些操作:
https://csharp-tutorials1.blogspot.com/2017/12/add-microsoft-access-engine-2010-as.html
最诚挚的问候
答案 3 :(得分:-1)
要使用此库,您需要在计算机上安装Office。如果有一个,你可以简单地以典型的方式添加lib。