仅Azure出现错误 - “Microsoft.ACE.OleDb.12.0”提供程序未在本地计算机上注册

时间:2010-10-14 22:19:10

标签: excel azure oledb

我正在使用Azure环境中构建的Web应用程序中的MS Excel文件。当我尝试访问开发结构上的excel文件时,我从未遇到过以下错误。 但是,一旦我在云中部署到Azure,我就会收到此错误消息。

“Microsoft.ACE.OleDb.12.0”提供程序未在本地计算机上注册。

我的印象是,Azure的开发结构是您在云中所期望的环境的复制品。

我在这里做错了吗? ACE.OleDb提供程序是否不在Azure中?

4 个答案:

答案 0 :(得分:3)

Azure VM上未安装ACE.OLEDb提供程序。

开发结构不会仅仅通过其设计(在我看来,在这个领域存在缺陷)给出错误。由于Fabric在本地计算机上作为.NET程序集运行,因此它具有并利用对本地GAC的访问权限。因此,即使Azure图像GAC中不存在这些库,它也可以访问您已安装的任何内容。所以,你在使用Dev Fabric方面并没有做任何错误,只是当前状态下的DevFab(SDK 1.2)无法帮助你处理云中的程序集依赖(和其他细节)。

至于程序集本身,我对该提供程序,DAC或Jet驱动程序一无所知。但是,假设它们只是通过DLL引用工作,您应该能够在Azure中实现这一点,您只需要在您的引用中明确指出。

1.确保您已在DLL上选择“复制本地”

2.。)进行一些测试(可能从本地计算机中删除组件)以确保代码访问应用程序的bin路径中的DLL,而不是GAC。标准的DLL搜索算法应该保证这一点,但总是更好。

简而言之,如果您可以在没有安装该组件的情况下使本地工作,只使用本地DLL,则可以在Azure中进行复制。否则,你可能会受到云的支配。

答案 1 :(得分:1)

这意味着未安装DAC(数据访问组件)。

http://www.microsoft.com/downloads/en/details.aspx?familyid=7554f536-8c28-4598-9b72-ef94e038c891&displaylang=en

然而,不了解Windows Azure。

答案 2 :(得分:0)

开发结构与您在云上获得的结构非常接近,无需在开发计算机上运行虚拟机。

在开发结构中运行代码时,它可以访问计算机上安装的所有组件。您的代码在云中运行的计算机上只有非常少的安装。它或多或少是Windows Server 2008的全新安装(如果它是一个Web角色,IIS将运行)。

如果您所做的只是构建项目,将构建文件复制到新计算机并运行它,那么部署到Azure的任何代码都需要能够运行。因此,如果您尝试使用的此组件只是一个.Net程序集,请更改引用,以便将“Copy Local”设置为true,这应该可行。如果让你的代码工作需要你实际安装一些东西,我会寻找一种不同的做事方式。

答案 3 :(得分:0)

我今天也遇到了同样的问题。我正在使用Azure的标准计划,并且通过Azure Web门户访问部署服务器。我没有使用Azure VM,因为它是一个更昂贵的选择。

我的一位同事建议使用OpenSDK,我最终可以在不使用OleDb驱动程序的情况下进行Excel操作。

帮助我完成我想要的一些资源是:

  1. https://www.microsoft.com/en-us/download/details.aspx?id=30425
  2. https://msdn.microsoft.com/en-us/library/office/hh298534.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-15
  3. reading Excel Open XML is ignoring blank cells
  4. 请确保将open sdk dll复制到本地。在我的例子中,它是在程序文件中引用我的计算机中安装的DLL。因此,当我上传到Azure时,它会丢失一个dll错误。我已将dll分别复制到bin文件夹。我想如果我们尝试引用dll的nuget选项,那么这个问题就不会出现了,但我自己并没有尝试过。

    希望这可以帮助那些正在寻找替代Oledb的人,以防无法在服务器上安装dll。