我有个mdb格式的数据库文件放在局域网上,可通过共享目录访问(比如\\PC1\DATA\db.mdb),另外我做了一个客户端程序(.exe),去读取这个存放局域网上的mdb文件。如果该客户端放在本地上执行,则可以成功连接并读取数据库上的内容;但如果我把客户端放在局域网上(我把它放和mdb文件同一个目录上),直接运行,则无法连接数据库,提示:“请求“System.Data.Odbc.OdbcPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败。”连接数据库是使用绝对路径。而且odbc,oledb,ado都试过了,情况都和上面的一样。请问有没办法直接运行存放在局域网上的客户端也可以成功访问局域网上数据库文件呢?谢谢
但奇怪的是客户端放在局域网上就连接不到数据库一个程序在本地运行和放在局域网上直接运行,会有什么差别可能影响到数据库连接呢?
映射效果和读取局域网MDB效果完全一样谢谢^^
我觉得应该不是权限问题吧?因为我在本地运行的程序可以连接成功,但在局域网放的就不可以。如果是局域网目录权限问题,那本地程序应该也不能连接到局域网上的程序了
不过Access是不适合用于局域网共享的,因为数据库操作要把文件全部读出之后写回,在数据库较大时效率很低,而且容易造成数据库损坏
很感谢!我招到了.NET配置内的“运行库安全策略->用户->受信任的应用程序”,但发现只能查看,不能添加
这个也试过了,呵呵~还是一样效果啊>_<
3q
谢谢。还第一次知道有这个设置的地方,呵呵
不过全部都设置成完全信任了还是不行T_T
1。把你的程序加到“信任程序集”里面;
2。配置“配置中等风险文件类型”的列表;
3。在你的机器建一个跟服务器上面一样的用户/密码,然后使用该用户密码登陆;
“信任程序集”里也添加不到局域网上的程序,一添加就提示---------------------------
加载程序集时出错
---------------------------
无法加载程序集: \\pc1\xx.exe
---------------------------
确定
---------------------------
\\server\temp\xx.exe
我的EXE跟MDB都是在\\server\temp下面,设置完全信任后运行正常。
程序中我是这样访问MDB的
dtField=new DataTable();
OleDbDataAdapter adapter=new OleDbDataAdapter("select * from PDM","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbFile);
adapter.Fill(dtField);
我的启动方法完全和你一样啊~
那在你设置完全信任之前是不是也是会提示“请求“xxxxxxx”类型的权限已失败。”?
%SystemRoot%\Microsoft.NET\Framework\v1.1.4322\ConfigWizards.exe
这是.net 1.1版本的配置吗?我连2.0 3.0都安装了,是不是要设置相应版本的配置?我在%SystemRoot%\Microsoft.NET\Framework\下其他版本目录没有招到ConfigWizards.exe谢谢jinta2001
2。ConfigWizards是1.1的,2.0的好象没有相应文件。没招了。
to jinta2001:再次表示感谢!我再等等看^^
呵呵,,这个如果为了使用我的程序,服务器的2003换成98,估计就要被老板X掉了^^
还没看懂…
然后选择:.NET Framework 2.0 Configuration\我的电脑\运行库安全策略\计算机\代码组\All_Code\Internet_Zone,然后选择"编辑代码组属性",修改权限为FullTrust应该就可以了
不过不是修改Internet_Zone,而是LocalIntranet_Zone,因为是本地网络。
非常感谢jinta2001,还有感谢其他关注的朋友!!