2013-02-15 131 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

相关问题