7

我收到错误消息“'Microsoft.ACE.OLEDB.12.0' 提供程序未在本地计算机上注册。” 在我的测试服务器上。所以我的问题是:

i) 我可以添加“'Microsoft.ACE.Oledb.12.0.dll'”的参考来自行投影吗?ii) 安全吗?iii) 如何做到这一点?

因为我的机器上安装了最新版本的 office,所以一切都在我的本地机器上运行。一旦我将代码部署到测试服务器,我就会遇到错误。我可能无法在测试服务器上安装 Office(由于某种原因)。那么是否可以将所有需要的 dll 放入项目本身并将其部署到测试服务器?

提前致谢。

4

3 回答 3

1

为了使用“Microsoft.ACE.OLEDB.12”,您需要安装“Microsoft Access Database Engine 2010 Redistributable”

信息页面在这里: 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
于 2014-03-30T10:54:36.740 回答
1

您可以通过在安装项目中添加 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”

我还注意到,在某些情况下,您必须在用户的机器上安装“AccessDatabaseEngine.exe”而不是“AccessDatabaseEngine_X64.exe”,即使它是 64 位 Windows!

这篇文章包括一个视频,展示了如何逐步完成所有这些操作:

https://csharp-tutorials1.blogspot.com/2017/12/add-microsoft-access-engine-2010-as.html

此致

于 2019-08-15T16:11:52.933 回答
-1

如果您想使用 AccessDatabaseEngine 64 和 IIS 64 位(例如 windows 2012 64 位),请按照

  1. 您必须在 IIS 上添加角色 asp.net 4.0、.net 4.0

  2. 打开 IIS 管理器

  3. 打开您网站的应用程序池的高级设置

  4. Enable 32-bit Applications 设置为 False(必须这样做,否则 iis 不设置为 32 位引擎)

  5. 如果您的站点使用 .net 4.0,则 .NET Framework 版本设置为精确版本

6. [这是关键点!!!] Managed Pipeline Mode 设置为“Classic”

祝你好运 :)

于 2014-02-18T05:54:42.373 回答