用C++写了个DLL库 封装了一个别人写的API库我用C#写个winform程序可以正常使用这个DLL可我用WCF调用这个DLL时却报错 接收对 http://localhost:51782/Service1.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。
我把C++中所有涉及到别人的API函数都删除就不会出错了这个是什么原因呢? 线程的关联性么?
我把C++中所有涉及到别人的API函数都删除就不会出错了这个是什么原因呢? 线程的关联性么?
public extern int Mycall(int);//这是动态库里的一个函数
这段放在CalculatorService 外
这些都没问题 WCF下 只要把我DLL中涉及到别人的写的API函数去掉就可以
但是在winform程序中又没有问题 所以才压抑
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_EmployeeService"
contract="EmInfoSys.Server.Service.AlarmAndLogService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />绑定了
1. 运行账户不同造成的权限问题。
winform是当前登录用户,IIS website是network service
不过看你使用的应该是vs 的web server,应该不是这个问题2. 当前路径不同
winform的当前路径就是exe所在的路径,而asp.net的当前路径是C:\windows\system32 好像是这个,方正不是你web site的bin目录
可以将dll copy到%windir%\system32\试一试。
{
string path = Environment.GetEnvironmentVariable("PATH") ?? string.Empty;
path += ";" + string.Join(";", paths); Environment.SetEnvironmentVariable("PATH", path);
}
public void GetSnapValue(string PtName)
{
Interface_init("172.21.130.59", 0, 1);//我的DLL接口函数 此函数中没有调用别
//人的API 所以如果只调用这个 不调用GetSnapshotValue的话 WCF可以正常返回
int dd = 10;
float ff = 12;
short ss = 12;
int Res = GetSnapshotValue("1RCP010VE.av", ref ff, ref ss);//此函数内调用了
//别人写的API函数 且此函数可以正常返回
}//在这里WCF返回的时候会报错 如果GetSnapshotValue中不调用别人写的API 则WCF可以正常返回