Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF,DLLIMPORT奇怪的问题_Wcf_C# 4.0_Iis 7_Hosting_Dllimport - Fatal编程技术网

WCF,DLLIMPORT奇怪的问题

WCF,DLLIMPORT奇怪的问题,wcf,c#-4.0,iis-7,hosting,dllimport,Wcf,C# 4.0,Iis 7,Hosting,Dllimport,我有一个很奇怪的问题,我想不出来 首先,我在VS2010中完成了WCF服务4.0。 该服务有两个返回字符串数组、数据表等的方法。 其中一些使用C++ [DLL]函数[dLimPurt] 我做了一个测试控制台来测试一切。当我从VisualStudio运行WCF并使用生成的路径时,它工作得非常好 现在这里是它变得奇怪的地方。如果我打开我的本地IIS,创建一个新的应用程序,并指向我的VS源代码,WCF我就可以很好地看到它 现在使用IIS本地的http路径,我刷新了所有的方法,看起来都是正确的。但当我

我有一个很奇怪的问题,我想不出来

首先,我在VS2010中完成了WCF服务4.0。 该服务有两个返回字符串数组、数据表等的方法。 其中一些使用C++ [DLL]函数[dLimPurt]

我做了一个测试控制台来测试一切。当我从VisualStudio运行WCF并使用生成的路径时,它工作得非常好

现在这里是它变得奇怪的地方。如果我打开我的本地IIS,创建一个新的应用程序,并指向我的VS源代码,WCF我就可以很好地看到它

现在使用IIS本地的http路径,我刷新了所有的方法,看起来都是正确的。但当我运行我的测试应用程序时,我可以调用任何函数而没有任何问题,除了任何使用DLLIMPORT函数的人。它们都会崩溃,甚至无法通过跟踪CES异常进行跟踪

逐行记录表明,异常实际上是由这些函数调用的

问题中的DLL是相同的,路径是为我的计算机硬编码的,因为仍处于测试阶段,文件夹是c:\DLL\mylib.DLL,因此与卷影复制IIS/visual studio无关,请在实际运行时执行。此外,即使在sys32中,也不能使用OTU路径按名称引用DLL

有线索吗

还有。32位,更改应用程序池级别对文件夹的权限访问,计算机上的完全管理员也已更改。他们都试过了,但没有成功

编辑:加上所有这些,因为我没有明确说明这一点,这不是我第一次真正的WCF设置。我以前已经做过很多服务,并自己部署了它们(可能大约50-60个服务)。我问这个问题是因为我以前从未见过这个问题,我尝试了所有我知道的技巧,并且可以在互联网上找到我认识的人

我们已经决定在本地将整个服务合并到WPF项目中,因为只要IIS没有托管,它就可以工作。但这并不是一件好事,因为这些数据和工作不应该在客户端完成,而应该在服务器端完成。现在还可以,因为需要使用它的软件还没有发布给公众,所以它并不重要


下一个选项是web服务器上托管的net TCP/IP windows服务,如果我找不到任何其他内容。

我们决定克服困难,在主软件中对逻辑进行硬编码,并避免使用web服务来解决此问题。我们将不得不手动处理更新、安装unregister和重新注册非托管DLL的问题,但至少它是有效的


自那以后,我们已经添加了5个以上的web服务,它们没有问题,但它们都没有使用DLL导入。

运行应用程序的帐户(不仅仅是应用程序池)是否对DLL所在的文件夹具有完全访问权限?另外,如果您将DLL移动到WCF DLL所在的同一位置,是否会改变结果?我没有在我的开发机器上与任何用户玩过游戏,它在默认情况下以Iuser帐户运行asp.net,并且他确实可以访问该文件夹。另外,为了确保我还为帐户“Everyone”添加了“完全控制”权限,显然只是为了测试目的,但没有结果。此外,bin中WCF DLL旁边的DLL也没有帮助。即使导入函数中的DLL路径未指定路径。如下面的示例“[DllImport(@“MyLib.dll”,CallingConvention=CallingConvention.StdCall,CharSet=CharSet.Ansi)]私有静态外部int SET_XML_PATH([MarshalAs(UnmanagedType.AnsiBStr)]ref string PATH_PAnsiChar);”同时,将文件复制到项目中的目录也不起作用。