【发布时间】:2011-08-13 22:49:02
【问题描述】:
我的项目结构如下:
ASP.NET 调用 C# 层调用 Managed C++ 调用 Native C++
(我试图避免使用互操作,所以这就是托管 c++ 层的原因)
我编写了测试 C# 层的单元测试,它工作正常。
当我尝试运行 asp.net 页面时,我得到:"Could not load file or assembly..." 错误。
我发现当我将 Native C++ dll 复制粘贴到“Temporary ASP.NET Files”(到相应的文件夹)时,该站点可以正常工作。
似乎 Managed C++ 代码只有在同一文件夹中才能找到 Native C++ 代码 - 显然我不能将我的 Native dll 放在临时文件。
有没有办法将 Native 设置在全局位置(不适用于 System32)?
感谢你们的cmets。
归结为一种选择:
- 这是安全问题
我用代码自行设置了服务器,它在 cassini 下运行,但是当我发布它(在 iis7 下运行)时,我得到“无法加载文件或程序集......” 我正在运行带有 ApplicationPoolIdentity 的 IIS7,集成了 .net 4 非常感谢, 皮尼。
【问题讨论】:
-
您确定将本机 dll 复制到 System32 不起作用吗?只要该文件夹在您的路径中,它就应该成功加载。
-
您可能遇到了 64 位/32 位兼容性问题。如果您的服务器是 64 位而您的本机 dll 是 32 位,您应该尝试将托管代码构建为 X86 并将您的本机 dll 复制到 Syswow64 而不是 System32
-
有趣点!!我的服务器是 64 位的。我认为这不是问题,因为我能够在服务器上(我在那里有 vs2010)但在 Cassini 下构建和运行代码(所有层)。问题是当我在本地从服务器发布代码时,我得到了错误。
标签: c# asp.net c++ unmanaged managed-c++