我对ADOX Interop有一个非常奇怪的问题。

我有以下代码:

        try
        {
            if (File.Exists(path))
                File.Delete(path);

            var cat = new CatalogClass();
            cat.Create("Provider=Microsoft.Jet.OLEDB.4.0; Data Source = d:\\Test.mdb; Jet OLEDB:Engine Type=5");

            Marshal.ReleaseComObject(cat);
            cat = null;
            GC.Collect();
        }
        catch (FileNotFoundException e)
        {
            throw new FileNotFoundException("El archivo no se encuentra", e);
        }
        catch (COMException e)
        {
            throw new COMException(connStr + e.Message);
        }
        catch (Exception e)
        {
            throw new Exception(connStr, e);
        }


代码在cat.Create()行中失败。真正奇怪的是,在我的本地开发人员机器上它可以正常工作,但在生产服务器中却不能...这不是写权限问题,因为我试图在问题行之前生成一个随机文件并正常工作完美。
COMException消息仅是“未指定错误” HResult:-2147467259

服务器操作系统为Windows 2008 32位。我认为这是服务器配置问题,但是您能给我一些启发吗?我不知道还能做什么...

最佳答案

如果将应用程序部署在64位计算机上,则代码无法通过JET.OleDB.4.0使用ADOX
如果是这种情况,那么一种快速的解决方案是将您的目标体系结构更改为x86。

否则,您可以尝试在目标计算机上下载并安装64位版本的Microsoft Access Database Engine驱动程序,但是我不知道它们是否支持ADOX。您还需要更改连接字符串

10-05 19:25