gpt4 book ai didi

c# - 无法从 ASP.NET 调用 DLL

转载 作者:太空狗 更新时间:2023-10-30 00:26:50 26 4
gpt4 key购买 nike

您好,我有一个 C Dll,它将与 Cobol 应用程序交互。我们想通过互联网将数据发送到 cobol。

所以我创建了一个 C# DLL,它将调用 C DLL。当我执行控制台应用程序时它工作正常,但是当我尝试从 ASP.NET 调用相同的 DLL 时它给出错误消息

我不明白那个错误

An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

还有一些其他帖子与此相关,但那些与我的上下文不符 我认为我缺少 asp.net 的权限

这是我的c#dll中调用c dll的声明

[DllImport(@"C:\CCExpert\haz450cp.dll", EntryPoint = "Methodname", CallingConvention = CallingConvention.Cdecl)]
unsafe public static extern void Methodname(ref p1, ref p2);

编辑:

您好,我根据您的建议更改了设置,但现在我收到了一个新错误

Microsoft Visual Studio C Runtime Library has detected a fatal error in w3wp.exe

最佳答案

如果您有 C .dll,它将是 32 位或 64 位的。您必须确保您的网站在正确的平台上运行(也就是说,您的网站作为匹配的 32/64 位网站运行。)

在 IIS 7 中,您可以通过右键单击应用程序池并选择 高级设置 来配置应用程序池的位数。有一个名为 Enable 32-bit applications 的设置,对于 32 位网站,您需要将其设置为 True,对于 64 位网站,您需要将其设置为 False .

您可以使用 Dependency Walker查看 DLL 是 32 位还是 64 位:使用 View full paths(看起来像工具栏上的 C:\)以及您的 .dll 的依赖项和:

  • 如果您使用的是 32 位操作系统,则您的 .dll 可能是 64 位的。您将无法加载它。
  • 如果您使用的是 64 位操作系统:
    • 如果依赖在System32下,就是64位的.dll
    • 如果依赖项在 SysWOW64 下,则为 32 位 .dll

告诉你如何设置应用程序池。要设置应用程序池,您可以检查 this link .

确保在打开应用程序池属性时使用高级设置,而不是基本设置。此外,当您为您的网站调出属性时,这些设置不可用 - 它们仅适用于应用程序池。

关于c# - 无法从 ASP.NET 调用 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9296142/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com