您好,我有一个 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)
还有一些其他帖子与此相关,但这些帖子与我的背景不符
我想我失踪了permissions
对于 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);
Edit:
您好,我根据您的建议更改了设置,但现在出现新错误
Microsoft Visual Studio C Runtime Library has detected a fatal error in w3wp.exe
如果您有 C .dll,它将是 32 位或 64 位。您必须确保您的网站在正确的平台上运行(即您的网站作为匹配的 32/64 位网站运行。)
在 IIS 7 中,您可以通过右键单击应用程序池并选择Advanced Settings
。有一个设定叫Enable 32-bit applications
,你需要将其设置为True
对于 32 位站点和False
对于 64 位网站。
您可以使用依赖步行者 http://www.dependencywalker.com/查看 DLL 是 32 位还是 64 位:使用View full paths
(好像C:\
工具栏上)以及您的 .dll 的依赖项和:
- 如果您有 32 位操作系统,您的 .dll 可能是 64 位。您将无法加载它。
- If you have a 64-bit OS:
- 如果依赖项位于 System32 下,则它是 64 位 .dll
- 如果依赖项位于 SysWOW64 下,则它是 32 位 .dll
这告诉您如何设置应用程序池。要设置应用程序池,您可以检查这个链接 https://help.webcontrolcenter.com/KB/a1114/how-to-enable-a-32-bit-application-pool-in-iis7-dedicatedvps.aspx.
确保您使用Advanced Settings
当您打开应用程序池属性时,不是基本设置。此外,当您打开站点属性时,这些设置不可用 - 它们仅适用于应用程序池。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)