难问题,同样的DLL,相同C#代码,有错
用VC6写的DLL,其中有代码访问ACCESS数据库CDaoDatabase test;
test.Open("c:\\imageface.mdb");
if (test.IsOpen())
{
。。。。。。。。操作
}
test.Close();
此DLL用VC,VB等语言调用运行正常
在C#2005中,建立了webservice服务,调用这个函数
[DllImport("c:\\Recognition.dll")]
private static extern bool UnInitFace();
[WebMethod]
public string systest()
{
UnInitFace();
return "ok";
}
执行错误如下:错误代码在test.Open
在 System.Runtime.InteropServices.SEHException 中第一次偶然出现的“App_Code.gcqmauky.dll”类型的异常
在 System.Reflection.TargetInvocationException 中第一次偶然出现的“mscorlib.dll”类型的异常
在 System.Reflection.TargetInvocationException 中第一次偶然出现的“System.Web.Services.dll”类型的异常
操作系统win200 pro
第一,WEBservice肯定可以对C盘文件进行读写操作
我的日志就写在C盘,不应该存在没权限访问c:\\imageface.mdb的问题
运行是,通过webservice的debug运行的,没有布置到IIS
我用c#的对话框程序调用了一下,对的
public partial class Form1 : Form
{
[DllImport("c:\\Recognition.dll")]
private static extern bool UnInitFace();
[DllImport("c:\\Recognition.dll")]
private static extern bool Recogn(ref string strimgpath, ref int distone, ref int disttwo, ref int distthree, ref string outimgone, ref string outimgtwo, ref string outimgthree);
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
bool ret=UnInitFace();确///////返回正确,没有异常
}
请高人解答 --------------------编程问答-------------------- 如果是这样我觉得有可能是权限之类的问题,为什么不尝试着改变一下dll文件的路径看是否能够解决此问题?
尽管你的程序拥有对C:\\进行读写的权限,但是你的dll中进行的操作具体需要哪些权限无法明确得知,有可能是在dll中执行发生了类似于没有权限的故障。
--------------------编程问答-------------------- 1,像楼上所说的权限问题
2,是不是因为没有注册dll,先注册dll试试看 --------------------编程问答-------------------- 需要注册DLL?
非托管DLL,直接
[DllImport("c:\\Recognition.dll")]
private static extern bool UnInitFace();
为什么不尝试着改变一下dll文件的路径看是否能够解决此问题?
换到D盘》?
怪就在于,C#桌面程序调DLL就是对的,就webservice这里不就行了 --------------------编程问答-------------------- "但是你的dll中进行的操作具体需要哪些权限无法明确得知,有可能是在dll中执行发生了类似于没有权限的故障。 "
操作C盘的MDB文件,在webservice中,那里可以设置呢 --------------------编程问答-------------------- 权限^ --------------------编程问答-------------------- 如果是咱设置嘛,老大,指条明路啥 --------------------编程问答-------------------- 帮顶。。。 --------------------编程问答-------------------- 权限在那里设置 --------------------编程问答-------------------- 权限在那里设置 --------------------编程问答-------------------- 极有可能是权限问题。
Web Service 在 IIS 下运行,默认用户是匿名用户。
如果偷懒的话,请试试给你的 DLL 加上 Everyone 的 “读取和运行” 权限。
“权限在哪里设置”?
选中你的 DLL,点击鼠标右键,在弹出菜单中选择“属性”-->点击“安全”选项卡-->
点“添加”按钮-->点“高级”按钮-->点“立即查找”按钮-->找到 Everyone 并选中 -->
“确定”-->“确定”-->选中 Everyone --> 勾选“读取和运行”-->“确定” --------------------编程问答-------------------- 帮顶 --------------------编程问答--------------------
一点都不怪...C#桌面程序使用你当前登录的Windows用户(99.999999%的程序员是用Administrators)而WebService是IIS用户...IIS 5是ASP.NET,IIS 6是Network Service... --------------------编程问答-------------------- 楼上的意思是把IIS的两个用户加到administrators组里面就有这个权限了? --------------------编程问答-------------------- web.config:
<system.web> 这节中加入
.....................加入
<identity impersonate="true" userName="administrator" password="yourpassword"></identity>
</system.web> --------------------编程问答-------------------- 可能是在dll中执行发生了类似于没有权限的故障 --------------------编程问答-------------------- 是的,我在DLL中有检查文件是否存在代码,在webservice中运行就报错的
是有类似于没有权限的故障 --------------------编程问答-------------------- 分析器错误信息: 未能从配置文件中指定的凭据创建 Windows 用户标记。源自操作系统的错误“客户没有所需的特权。
”
源错误:
行 12: <connectionStrings/>
行 13: <system.web>
行 14: <identity impersonate="true" userName="Administrator" password="taotao"/>
--------------------编程问答-------------------- 友情帮顶,和谐接分 --------------------编程问答-------------------- 试一试给NETWORK SERVICE 和ASP.NET C盘的读写权限。
右键点击C: -> Properties -> Security -> Add...
加入NETWORK SERVICE和ASP.NET,并check modity.
--------------------编程问答-------------------- 分析器错误信息: 未能从配置文件中指定的凭据创建 Windows 用户标记。源自操作系统的错误“客户没有所需的特权。
”
源错误:
行 12: <connectionStrings/>
行 13: <system.web>
行 14: <identity impersonate="true" userName="Administrator" password="taotao"/>
怎么报错呢 --------------------编程问答-------------------- 我把ASP.net IUSR这两个用户都加到administrator组中了,还是没有权限,奇怪 --------------------编程问答-------------------- 追加两个用户
一个是aspnet用户
一个是serveice用户 --------------------编程问答-------------------- win2000 IIS5
aspnet
serveice
iusr
三个用户都已加到administrator组中了
一样没权限,报HTTP500错误 --------------------编程问答-------------------- 我觉得也是权限问题,但是在webservice里面,最好不要用绝对路径去加载或者下载什么东西,改成相对路径会好点
而且不容易出问题 --------------------编程问答-------------------- 这个好像不是绝对路径,相对路径的问题
我在DLL中原本有检查文件是否存在的代码,在WEB中调用都通过不过的
后面只好没要 --------------------编程问答-------------------- 此贴无答案,继续顶 --------------------编程问答-------------------- 现在发现一个问题,是否不是权限的问题这么简单
我在DLL中,用deletefile("c:\\imageface.mdb"),WEB执行是可以的
对C盘的读写是可以的,没有问题
CDaoDatabase test;
test.Open("c:\\imageface.mdb"); 这句就不行了,也就是说,MFC的CDaoDatabase 类操作不行而已
这是为什么呢?权限》需要用MDAC?》没道理呀,我的天,郁闷的很
补充:.NET技术 , C#