asp.net 访问 access出现 ole_connection.ServerVersion引发了System.InvalidOperationException的解决

来源:互联网 发布:java ee 开源框架 编辑:程序博客网 时间:2024/05/22 06:49

今天在一台电脑上使用asp.net访问access,出现了

ole_connection.ServerVersion引发了System.InvalidOperationException;

下面是解决过程;


先看下异常的情况;



为了认识错误的根源,展开看更细节的异常情况;



此时连接字符串的两种写法都试过了;

conn_str = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='xxxx.mdb'";
conn_str = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='xxxx.mdb'";

所以不是这个的问题;


参考此文;

http://wangbin840403.blog.163.com/blog/static/21271097201342310550841/


在注册表中查看Provider的访问权限;

搜索项;



看下12.0和4.0两个提供者都是存在的;



继续再搜Microsoft.Jet.OLEDB.4.0,下面这个也有Microsoft.Jet.OLEDB.4.0,但不是本项目使用的提供者;



看下Microsoft.Jet.OLEDB.4.0的访问权限;



添加Everyone的完全控制权限后如下;



对12.0也同样添加权限;



结果还是一样的错误;


是否本机不存在Microsoft.Jet.OLEDB.4.0的DLL呢;搜索下C盘,这货还是在的;


那么12.0使用的是哪个DLL呢?

如果没有12.0的提供者;根据网上资料可在

http://download.microsoft.com/download/7/0/3/703ffbcb-dc0c-4e19-b0da-1463960fdcdb/AccessDatabaseEngine.exe

下载后安装即可;


现在连接字符串没问题;提供者也有;注册表权限也正常;那么可能是本机某些配置限制了对OLEDB引擎的访问;

下面把另一个可在另一台电脑运行的C#操作Access的程序拷贝到本机,下断点看一下;是一样的情况;

可知是本机的电脑配置问题;





0 0