C#web应用程序无法看到二级C dll

时间:2013-09-20 13:33:26

标签: c# .net dll

我有一个奇怪的问题,就是从C#windows / web应用程序调用C dll。

情景是: 我们有一个使用C#dll(csharp1.dll)的C#Web应用程序。 这个csharp1.dll返回从C dll(c1.dll)调用一些函数。 并且c1.dll返回调用另一个C dll(c2.dll)以获得一些较低的函数。

详细信息: 在csharp1.dll的实现中,有pinvoke行,例如:

[DllImport("c1.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
static extern unsafe internal void *openhw(int id);

但是,没有直接引用c2.dll,c1.dll由LoadLibrary("c2.dll")加载到c1.dll中。

问题: 将csharp1.dll添加到C#windows控制台应用程序时,它可以正常工作,并且可以使用c1.dll和c2.dll的所有功能。 将csharp2.dll添加到C#Web应用程序时,会加载c1.dll,但无法加载c2.dll。

只有在从Web服务器IIS运行的C#Web应用程序中使用时,才会出现此问题。因此,我尝试将c2.dll甚至放入windows目录,认为调用进程(IIS)无法看到c2.dll,没有运气。我发现LoadLibrary("c2.dll")来电没有任何问题。

什么可能导致这样的问题?如何在不改变c1.dll和c2.dll的实现的情况下解决这个问题?

更新:我已尝试调整信任级别并禁用ShadowCopying,但都没有帮助。

0 个答案:

没有答案