2013-02-15 197 views
0

在我的ID卡讀取應用程序我導入一些非託管代碼(dll)進行身份驗證。我無法導入這個DLL。我沒有收到任何錯誤,但該DLL沒有被導入並且無法訪問。它在Web應用程序中完成時以Windows形式工作。我沒有得到輸出。我可以有一些想法或一些例子,關於如何使用它? 這裏是我的代碼:是否可以在ASP.NET網站中調用非託管代碼?

/// <param name="readerNumber">The reader number.</param> 
     [DllImport("EIDReader.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] 
     internal static extern void InitSelectedReaderEx(ManagerData data, int readerNumber); 

[DllImport("EIDReader.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)] 
    [return: MarshalAs(UnmanagedType.Bool)] 
    internal static extern bool ReadSISCard([In, Out] SISRecord identity); 
+0

答案是肯定的教程,但要獲得更好的東西,你需要弄清楚你的問題是什麼,這個信息添加到問題(異常類型/文本,...) – 2013-02-15 05:35:47

+0

做你的asp.net網站引用的DLL? – 2013-02-15 05:39:29

+0

Aniket,是的,推薦 – Muthuram 2013-02-15 05:41:12

回答

0

是你想引用COM庫的庫嗎?如果是這樣,那麼你需要爲它創建一個COM包裝器DLL。查看工具tlbimp這將創建一個可以在ASP.NET應用程序中引用的包裝器DLL。

3

C#/ Winforms加載DLL的方式和ASP.NET的工作方式之間有區別。

C#winforms在.NET VM中執行,ASP.NET(也在.NET VM上運行)在IIS中進行了沙盒處理。

你必須先將加載把dll存入內存,然後調用你想要的方法。

看到這裏How to Interop ASP.NET

+0

+1。手動加載本地DLL的良好鏈接/建議。我對Winform/ASP.Net的比較略有不同:Winforms和ASP.Net在加載DLL時沒有什麼區別,而是從本地DLL加載的路徑 - 通常情況下WinForms的默認路徑(可執行文件旁邊)包含自定義本機圖像,但在ASP.Net的情況下,對於管理DLL的正常位置默認情況下不會被搜索。 – 2013-02-15 06:06:36

+0

Aniket,Alexei默認情況下,DllImport只引用應用程序路徑或其他系統Win32。 – Muthuram 2013-02-15 06:21:37

+0

@Muthuram for Winforms,默認搜索目錄是當前的,然後是system32。對於asp.net,它是'\ system32 \ inetsrv' – 2013-02-15 06:28:06

相關問題