Azure Cloud Service上出现Microsoft.Jet.OLEDB.4.0错误

时间:2013-08-01 06:52:51

标签: azure oledbexception

我的要求是将excel文件上传到网站root上的文件夹,然后将此文件的数据读入数据表。

这在我现有的托管服务提供商上运行良好。但现在我已将我的网站上传到Windows Azure云服务上。移植到Azure云服务后,我在“Microsoft.Jet.OLEDB.4.0”提供程序上收到错误。

我使用“Microsoft.Jet.OLEDB.4.0”提供程序从excel文件中读取数据并将数据添加到datatable。它在本地也可以正常工作,但是当我在azure云服务上托管我的Web应用程序时,它会生成以下错误

“Microsoft.Jet.OLEDB.4.0提供程序未在本地计算机上注册”

请查看某些代码:

string strpath = Server.MapPath(OAppPath);
                    strpath = strpath + "\\MYDATAFOLDER\\" + System.IO.Path.GetFileName(FileUpload1.PostedFile.FileName);

                    FileUpload1.PostedFile.SaveAs(strpath);

                    string excelConnectionString = "";
                    excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strpath +
                                            ";Extended Properties=\"Excel 8.0;;IMEX=1;HDR=yes\"";
                    var connection = new OleDbConnection(excelConnectionString);
                    connection.Open();
                    var dtSheets = new DataTable();
                    dtSheets = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    GC.Collect();
                    GC.WaitForPendingFinalizers();

这是什么的替代解决方案?

我也跟着看了下去:

Link 1 Link 2

由于 卡皮尔

1 个答案:

答案 0 :(得分:3)

这可能是因为您的应用程序在64位模式下运行而引起的。据微软称,The Microsoft OLE DB Provider for Jet and the Microsoft Access ODBC driver are available in 32-bit versions only

How to get a x64 version of Jet?中所述:

  

Microsoft Jet数据库引擎4.0组件进入了功能弃用状态和持续工程状态,并且自从成为Windows 2000中Microsoft Windows的一部分后,尚未获得功能级别的增强。

另一种方法是在您的云服务中使用startup task来部署Microsoft Access Database Engine 2010 Redistributable。您必须将连接字符串更改为此新驱动程序支持的格式。

我成功使用的另一种方法是使用ExcelDataReader等库来读取电子表格数据。