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

190 篇文章 7 订阅

今天在一台电脑上使用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的程序拷贝到本机,下断点看一下;是一样的情况;

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值