Asp.net 调用 C# 层调用托管 C++ 调用本机 C++

2024-04-27

我的项目结构如下:

ASP.NET呼叫C#层调用ManagedC++ 调用Native C++ (我试图避免使用互操作,所以这就是托管 C++ 层的原因)我编写了测试 C# 层的单元测试,它工作得很好。 当我尝试运行 asp.net 页面时,我得到:"Could not load file or assembly..."错误。 我发现当我复制粘贴原生C++dll 到“临时 ASP.NET 文件”(到相应的文件夹)该网站可以正常工作。

看来托管C++代码可以找到原生C++仅当代码驻留在同一文件夹中时 - 显然我不能将本机 dll 放在临时文件中。

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

感谢您的评论。

它归结为一个选择:

  1. 这是安全问题

我用代码自行设置了服务器,它在卡西尼下运行,但是当我发布它(在iis7下运行)时,我得到“无法加载文件或程序集......” 我正在运行 IIS7 和 ApplicationPoolIdentity ,.net 4 Integrated 多谢, 皮尼。


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

这篇博客文章在 ASP.Net 中加载 C++ 程序集 http://blogs.msdn.com/b/jorman/archive/2007/08/31/loading-c-assemblies-in-asp-net.aspx可能会帮助你 - 简而言之,你需要:

  • Set the %PATH%托管 C++ 程序集尝试加载本机 C++ dll 之前的环境变量。
  • Use the DllImport属性来设置 dll 路径(不适用于您的情况,因为您没有使用 P/Invoke)
  • 自己手动加载 C++ dll(例如使用LoadLibrary) 在托管 C++ 程序集尝试加载本机 C++ dll 之前。

我怀疑将 dll 安装到 Win SxS 也可以工作,但我不太清楚这是如何工作的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Asp.net 调用 C# 层调用托管 C++ 调用本机 C++ 的相关文章

  • 键盘加速器在 UWP 应用中停止工作

    我正在尝试将键盘加速器添加到 UWP 应用程序中的 CommandBar 菜单项 当应用程序启动时 这工作正常 但在我第一次打开溢出菜单后 加速器停止工作 这似乎不会发生在主要命令 菜单之外 上 只有溢出菜单内的辅助命令才会发生 此外 单击
  • 在Application_AquireRequestState事件中用POST数据重写Url

    我有一个在其中注册路线的代码Application AcquireRequestState应用程序的事件 注册路由后 我会在 Http 运行时缓存中设置一个标志 这样我就不会再次执行路由注册代码 在此事件中注册路线有特定原因Applicat
  • C# 中四舍五入到偶数

    我没有看到 Math Round 的预期结果 return Math Round 99 96535789 2 MidpointRounding ToEven returning 99 97 据我了解 MidpointRounding ToE
  • 找到的程序集的清单定义与程序集引用不匹配

    我试图在 C Windows 窗体应用程序 Visual Studio 2005 中运行一些单元测试 但出现以下错误 System IO FileLoadException 无法加载文件或程序集 实用程序 版本 1 2 0 200 文化 中
  • 找到的构造函数都无法使用可用的服务和参数 Autofac 进行调用

    我已阅读并编码以下示例 http timschreiber com 2015 01 14 persistence ignorant asp net identity with patterns part 1 http timschreibe
  • 序列化和反序列化 Visual Studio 解决方案文件 - 或以编程方式编辑?

    我想以编程方式添加和删除项目 解决方案文件夹和其他项目 例如解决方案的资源文件 但我不确定最好的方法是什么 对于那些不知道的人 高度简化 解决方案文件 sln 通常如下所示 Microsoft Visual Studio Solution
  • 指向字节数组的指针

    由于 Misra C 的要求 我的一位同事想要使用指针声明 但我遇到了一些问题 Misra 安全关键指南 不会让我们纯粹的程序员使用指针 但会让我们对数组字节进行操作 他打算获取一个指向字节数组的指针 因此我们不会在堆栈上传递实际的数组 T
  • 操纵 setter 以避免 null

    通常我们有 public string code get set 如果最终有人将代码设置为 null 我需要避免空引用异常 我尝试这个想法 有什么帮助吗 public string code get set if code null cod
  • 格式化货币

    在下面的示例中 逗号是小数点分隔符 我有这个 125456 89 我想要这个 125 456 89 其他示例 23456789 89 gt 23 456 789 89 Thanks 看看这个例子 double value 12345 678
  • 允许使用什么类型的内容作为 C 预处理器宏的参数?

    老实说 我很了解 C 编程语言的语法 但对 C 预处理器的语法几乎一无所知 尽管我有时在编程实践中使用它 所以问题来了 假设我们有一个简单的宏 它扩展为空 define macro param 可以放入宏调用构造中的语法有哪些限制 调用宏时
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • 如何使用收益返回和递归获得字母的每个组合?

    我有几个像这样的字符串列表 可能有几十个列表 1 A B C 2 1 2 3 3 D E F 这三个仅作为示例 用户可以从几十个具有不同数量元素的类似列表中进行选择 再举个例子 这对于用户来说也是一个完全有效的选择 25 empty 4 1
  • 相当于 C# 中 Java 的“ByteBuffer.putType()”

    我正在尝试通过从 Java 移植代码来格式化 C 中的字节数组 在 Java 中 使用方法 buf putInt value buf putShort buf putDouble 等等 但我不知道如何将其移植到 C 我尝试过 MemoryS
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • “int i=1,2,3”和“int i=(1,2,3)”之间的区别 - 使用逗号运算符的变量声明[重复]

    这个问题在这里已经有答案了 int i 1 2 3 int i 1 2 3 int i i 1 2 3 这些说法有什么区别 我无法找出任何具体原因 Statement 1 Result Compile error 运算符的优先级高于 运算符
  • 为什么使用 HTTP 动词?

    因为动词的目标是像 server domain getallrecords 或 server domain delete1record 或类似的 URL 而getallrecords delete1record都是专门为特定目的而设计的 为
  • 在 C++ 和 Windows 中使用 XmlRpc

    我需要在 Windows 平台上使用 C 中的 XmlRpc 尽管我的朋友向我保证 XmlRpc 是一种 广泛可用的标准技术 但可用的库并不多 事实上 我只找到一个库可以在 Windows 上执行此操作 另外一个库声称 您必须做很多工作才能
  • 从有符号字符转换为无符号字符然后再转换回来?

    我正在使用 JNI 并有一个 jbyte 类型的数组 其中 jbyte 表示为有符号字符 即范围从 128 到 127 jbyte 表示图像像素 对于图像处理 我们通常希望像素分量的范围为0到255 因此 我想将jbyte值转换为0到255
  • g++ C++0x 枚举类编译器警告

    我一直在将可怕的 C 类型安全伪枚举重构为新的 C 0x 类型安全枚举 因为它们是way更具可读性 不管怎样 我在导出的类中使用它们 所以我明确地将它们标记为导出 enum class attribute visibility defaul
  • 新的 .NET 6 控制台模板中的 C# 函数重载不起作用

    我在尝试重载该函数时遇到错误Print object in the 新的 NET 6 C 控制台应用程序模板 https learn microsoft com en us dotnet core tutorials top level t

随机推荐

  • support-library-v7 上的 ClassCastException,使用版本 21

    背景 在过去的两周里 我一直将我的应用程序从 ActionBarSherlock 转移到 Google 的官方支持库 以获得 Material Design 风格 我已经更新到最新版本 21 并且包含了 v4 和 v7 My app htt
  • 是什么让 jQuery 对象在 Chrome 开发工具中显示为数组?

    我想知道 jQuery 对象如何在 Chrome 开发者工具的控制台日志中显示为数组 例如 如果我执行 a 我在控制台日志中看到的是 a a 但以下说法是错误的 var a a Array isArray a false a instanc
  • 实体框架:如何检测数据库的外部更改

    我有一个存储过程可以更改数据库中的大量数据 该存储过程是从同时使用 EF 进行数据操作的应用程序调用的 因此 我单击一个按钮 存储过程在数据库中运行 数据发生更改 并且 EF 向用户显示旧数据 有没有办法强制 DbContext 或 Obj
  • 有条件地使用文件夹大小

    我只想在大小大于特定大小时删除文件夹 不幸的是我无法达到想要的结果stat module Attempt hosts pluto tasks stat path home ik thunderbird register folder nam
  • 无法放弃 git 中的更改

    一两周前 我拿了一些文件 这些文件是我用一个简单的程序存档的find sed tar xz gpgbash 脚本 将它们全部解压 并将它们的内容放入 git 存储库中 提交 将下一个档案内容放入存储库中 提交 冲洗并重复 以便拥有一个更好的
  • 按日期顺序排列的 T-SQL 查询组(间隙和孤岛)

    我有一个这样的示例表 CREATE TABLE Aggregate vKey INT dKey INT StartTrip DATETIME EndTrip DATETIME Distance INT 像这样的一些样本数据 INSERT I
  • 如何解决大内容的角度性能问题

    我熟悉 Angular 的摘要周期以及它如何影响长列表和大模型值的性能 我只是好奇您是否有专门针对我的情况的问题的解决方法 我正在构建一个应用程序 它可能需要也可能不需要用户输入大文本 例如错误日志textarea 但由于与 2 路数据绑定
  • R Studio:更改光标颜色

    我在 R Studio 中使用 Cobalt 编辑器主题 通过更改相应的 cache css 文件对其进行了稍微调整 背景颜色是深色的 我的选择 但文本光标 鼠标指针 也是深色的 因此很难看到 在哪里或如何将鼠标指针颜色更改为例如 cach
  • 在同一节点上匹配不同配置的模板

    我问了我的整个问题这里关于堆栈溢出 https stackoverflow com questions 64966059 nesting xsl templates and referring multiple templates to t
  • AppBarLayout 滚动时 RecyclerView fling 导致延迟

    我的布局如下
  • 在 dplyr 链中传递价值

    假设我有以下列 CurrentStatus Current NoChange NoChange NoChange NoChange Late 我想改变它 以便如果该值为 NoChange 则它使用先前的值 I tried myDF gt m
  • 通过存储过程将记录传输到目标表后,从源表中删除记录

    这是我在 user75ponic 的帮助下生成的存储过程 CREATE OR REPLACE PROCEDURE ARCHIVE DATA AS BEGIN MERGE INTO Schema2 table trg USING SELECT
  • Objective C:如何从 appdelegate 呈现模态视图控制器?

    我在我的应用程序的 appdelegate 中 如何在 didfinishlaunching 方法中添加模式视图控制器 我尝试了以下方法但没有成功 SomeViewController vc SomeViewController alloc
  • 使用 PHP SDK 在亚马逊 S3 上上传文件

    我正在尝试通过 PHP SDK 在我的亚马逊 S3 存储桶上上传文件 但是我的脚本不起作用 我有一个空白页面 没有任何错误或异常消息 编辑 在 php ini 中启用 display error 后 我有下面的错误消息 看起来 sdk 在我
  • DataGridView 自动添加新行 - 为什么?

    您好 我有一个使用 Windows 窗体的旧 C 应用程序 编写得非常糟糕 我最近不得不对应用程序进行一些广泛的更改 现在我面临着相当奇怪的问题 该应用程序最初设计为在主窗口 OnLoad 方法中加载数据 我知道这是一个糟糕的想法 后来重构
  • 我如何返回包含 c++ 中两个映射差异的 std::map ?

    我有两张地图 我需要找到差异并创建一张只有差异的新地图 不知道该怎么做 我尝试使用 set difference 但不太明白它是如何工作的 任何帮助 将不胜感激 谢谢 header file typedef std map
  • Java 文档生成器为 Xml 字符串返回 null 文档

    I have tried all possible answers https stackoverflow com questions 33098082 passing xml string as document returning nu
  • 在unity3d中通过标签查找不活动的游戏对象[重复]

    这个问题在这里已经有答案了 我有一个游戏对象 我希望在特定条件下激活它 我给了它一个独特的标签 并尝试使用GameObject FindObjectWithTag Tag name 据我所知 此方法只会找到场景中活动的游戏对象 而不是非活动
  • 有人可以解释一下 arcTo 的最后两个参数吗?

    我正在尝试绘制一个带圆角的矩形 我有一个 javascript 路径可以执行此操作 但 javascript arcTo 方法采用一个矩形 定义其椭圆形 然后采用一个参数来设置扫描 然而 在Android版本中有三个参数 矩形椭圆形 我认为
  • Asp.net 调用 C# 层调用托管 C++ 调用本机 C++

    我的项目结构如下 ASP NET呼叫C 层调用ManagedC 调用Native C 我试图避免使用互操作 所以这就是托管 C 层的原因 我编写了测试 C 层的单元测试 它工作得很好 当我尝试运行 asp net 页面时 我得到 Could