[英]Unable to call the DLL from ASP.NET
嗨,我有一个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)
还有其他一些相关的帖子,但那些不符合我的上下文我认为我缺少asp.net的permissions
这是我的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中,您可以通过右键单击应用程序池并选择“ 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位进程(反之亦然)。 要验证或排除此问题,请检查Asp.Net是否以64位模式运行,如果是,则需要64位版本的C DLL
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.