悬赏分:100 浏览:687 次
环境:
1.C#的WebService。
2.VC++6.0的动态链接库,DLL。
操作:
1.调用WebService,通过DLLIMPORT的自定义属性,去调用VC的DLL。
问题:
运行VS2005调试webservice,调用方法.OK,都可以运行。例如Localhost:3798/webservice/aaa.asmx;
通过IP调用WebService方法,有问题,报错。例如192.168.5.16/webservice/aaa.asmx.
可以出现aaa.asmx访问方法的列表界面。但是调用的时候出现
System.DllNotFoundException: 无法加载 DLL“D:\WebService\WebService\DBES\DLL\WebDB.dll”: 动态链接库(DLL)初始化例程失败。 (异常来自 HRESULT:0x8007045A)。
在 CSWebDB.IWebDB.WebDbInit()
在 WebService.SuperWebService.InitDB()
错误问题写得已经很清楚了,希望大虾们能帮我一下。
PS:我已经把所有文件夹的安全属性设为Everyone了。
|
Localhost:3798/webservice/aaa.asmx
192.168.5.16/webservice/aaa.asmx
请问你的localhost和IP为192.168.5.16是同一个计算机吗,如果是那么端口号哪里去了?
另外你的Web Services部署到IIS中了吗?你的Web服务工程建立的时候是不是就不是用的IIS而只是在VS.Net2005中调试,你想用IP访问请将你的Web Services部署到IIS当中,再用192.168.5.16/webservice/aaa.asmx访问看看。 asp.net不会把bin目录下的非拖管程序集(dll)拷贝到网站的实际运行目录里,所以加载不了那个VC6编写的dll. 你可以试试以下文法: 1,把那个dll扔到服务器的Windows目录里。 2,在WebService里通用LoadLibrary等Win32API从自己指定的地方加载相关的dll(当然,这个比较麻烦) 3,用C++/CLI对原来的dll做点包装(如果你有原来的代码的话),生成一个托管非托管相混合的新程序集,然后C#代码里调用这个新程序集里的方法。 同意一楼。应该是没有部署到IIS的原因。 |