加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Asp.net调用C#层调用Managed C调用Native C

发布时间:2020-12-16 06:37:18 所属栏目:asp.Net 来源:网络整理
导读:我的项目结构如下: ASP.NET调用C#层调用Managed C调用Native C (我试图避免使用互操作,所以这就是托管c层的原因) 我编写了测试C#层的单元测试,它运行正常. 当我尝试运行asp.net页面时,我得到:“无法加载文件或程序集……”错误. 我想通过当我将Native C dl
我的项目结构如下:

ASP.NET调用C#层调用Managed C调用Native C
(我试图避免使用互操作,所以这就是托管c层的原因)
我编写了测试C#层的单元测试,它运行正常.
当我尝试运行asp.net页面时,我得到:“无法加载文件或程序集……”错误.
我想通过当我将Native C dll粘贴到“Temporary ASP.NET Files”(到相应的文件夹)时,该网站可以正常工作.

似乎Managed C代码只有在它位于同一个文件夹中时才能找到Native C代码 – 显然我不能在temp文件中拥有Native dll.

有没有办法在全局范围内设置Native(不适用于System32)?

谢谢你的评论.

归结为一个选项:

>这是安全问题

我用代码设置了它自己的服务器,它在cassini下运行,但是当我发布它(在iis7下运行)时,我得到“无法加载文件或程序集……”
我使用ApplicationPoolIdentity运行IIS7,.net 4集成
非常感谢,
皮尼.

解决方法

技术上以这种方式使用Managed C是本机/托管代码之间的Interop形式,常用的替代方案是COM和P / Invoke.这纯粹是一个术语,但是,使用P / Invoke会遇到同样的问题.

这篇博客文章Loading C++ Assemblies in ASP.Net可能会帮助你 – 总之你需要:

>在托管C程序集尝试加载本机C dll之前设置%PATH%环境变量.
>使用DllImport属性设置dll路径(在您不使用P / Invoke时不适用于您的情况)
>在托管C程序集尝试加载本机C dll之前,手动加载C dll(例如使用LoadLibrary).

我怀疑将你的dll安装到Win SxS也可以,但我不知道这是如何工作的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读