我对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。您还需要更改连接字符串