[英]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.