C#学习教程:无法从ASP.NET调用DLL分享


无法从ASP.NET调用DLL

嗨,我有一个C dll,它将与cobol应用程序进行交互。 我们想通过互联网将数据发送到cobol。

所以我创建了一个C#DLL,它将调用C DLL。 当我做一个consoleapp时它工作正常,但当我尝试从ASP.NET调用相同的DLL时,它给出错误消息

我不明白这个错误

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

还有一些关于此的post,但那些不符合我的上下文我认为我缺少asp.net的permissions

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

 [DllImport(@"C:CCExperthaz450cp.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中,您可以通过右键单击应用程序池并选择“ Advanced Settings来配置应用程序池的位数。 有一个名为Enable 32-bit applications设置,你需要为32位站点设置为True ,为64位站点设置为False

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

这告诉您如何设置应用程序池。 要设置应用程序池,您可以查看此链接 。

确保在打开应用程序池属性时使用“ Advanced Settings ,而不是基本设置。 此外,当您为站点启用属性时,这些设置不可用 – 它们仅适用于应用程序池。

导致此问题的最可能原因是您尝试将32位DLL加载到64位进程(反之亦然)。 要validation或排除此问题,请检查Asp.Net是否以64位模式运行,如果是,则需要64位版本的C DLL

上述就是C#学习教程:无法从ASP.NET调用DLL分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1269827.html

(0)
上一篇 1天前
下一篇 1天前

精彩推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注