读卡器程序在本地系统工作,但不能从 IIS 服务器

Posted

技术标签:

【中文标题】读卡器程序在本地系统工作,但不能从 IIS 服务器【英文标题】:Card Reader Program works in Local system But not from IIS server 【发布时间】:2015-08-27 08:10:30 【问题描述】:

我使用 ASP.net MVC5 开发了一个读卡器应用程序。使用的读卡器是 HID OMNIKEY 3121。插入卡时,此应用程序将读取芯片中编码的姓名、性别、出生日期等。这在我的本地系统中运行良好,我可以在视图中显示它。 然后我将其发布到服务器中的 IIS。然后我从我的本地(客户端)系统调用 MVC 网站。读卡器连接到本地系统,但是当点击读取数据时,它给出一个空白页。

任何配置问题?请指导我

已编辑 控制器

public class cardController : Controller
    

        public ActionResult Index()
        
            try
            

             ReaderManagement readerMgr = new ReaderManagement();
             readerMgr.EstablishContext();//extablishing card connection API


                try
                
              readerMgr.DiscoverReaders(); //discover card reader connected
                
                catch(Exception ex)
                
                    return RedirectToAction("Nocard", "card");
                
                PCSCReader[] readers = readerMgr.Readers;
                PCSCReader selectedReader =             readerMgr.SelectReaderByName(readers[0].ReaderName);
                //Other select methods may be called...
                selectedReader.IsConnected();
      IDCardWrapper.LoadConfiguration();


                bool IsCardConnected = selectedReader.IsConnected();
                bool isContactless;
     if (IsCardConnected) isContactless =     selectedReader.IsContactless(); 
                if (!IsCardConnected)
                
                    readerMgr.SelectReaderByName(readers[0].ReaderName);

                    try
                    
                        selectedReader.Connect(readerMgr.Context);
                    
                    catch(Exception ex)
                    
                       return RedirectToAction("Nocard", "card");
                    

                


                CardInfo cardInfo = selectedReader.GetCardInfo();

                try
                

 PublicDataFacade publicDataFacade = selectedReader.GetPublicDataFacade();
 CardHolderPublicData publicData = publicDataFacade.ReadPublicData(true, true, true, true, false);
ViewBag.sex = PublicDataUtils.GetSex(Utils.ByteArrayToUTF8String(publicData.Sex));
ViewBag.maritalstatus = PublicDataUtils.GetMaritalStatus(Utils.ByteArrayToHex(publicData.MaritalStatus, ""));
                    ViewBag.sponsortype = PublicDataUtils.GetSponsorType(Utils.ByteArrayToHex(publicData.SponsorType, ""));

                    ViewBag.dob = Utils.ByteArrayToStringDate(publicData.DateOfBirth);

                    ViewBag.fullname = PublicDataUtils.RemoveCommas(Utils.ByteArrayToUTF8String(publicData.FullName));
                    ViewBag.arabicname = PublicDataUtils.RemoveCommas(Utils.ByteArrayToUTF8String(publicData.ArabicFullName));


                


                readerMgr.CloseContext();
            
            catch (Exception ex) //(MiddlewareException ex)
            

            

            return View();
        

查看

仅显示分配的 viewbag 数据。

【问题讨论】:

您需要包含一些代码,也许它试图在服务器而不是客户端读取卡片。没有代码,没有线索! @AshleyMedway 问题已编辑..ya 可能是它试图读取服务器上的卡片而不是客户端..如何让它读取客户端..我卡在那里 感谢 Dravid,我不是这项技术的专家,但除非它与客户端有某种套接字连接,但它看起来不像。正如我所怀疑的那样,您的代码正在尝试从服务器上的读卡器读取详细信息。至少,如果与客户端有某种连接,我希望您对请求上下文进行一些操作。 @AshleyMedway 感谢您的指导......让我检查一下 短版是普通网页无法访问本地外设,而在服务器上运行的代码会访问服务器本地的外设。您要么需要编写一个小型桌面应用程序来与读者对话,并且可以通过网页上的 javascript/Ajax 在本地访问,要么不使用标准浏览器(例如,.hta's 用于启动带有额外本地功能的无铬 IE 窗口权限,包括使用 COM 进行调用的能力)。或者,Flash 可能允许您跳过浏览器安全模型并访问本地设备 【参考方案1】:

您无法通过网站访问本地设备(如智能卡读卡器)。

您必须在客户端计算机上安装桌面应用程序(如 @Ashley 和 @Basic 所述):例如 Chrome 应用程序或 Windows 应用程序。

【讨论】:

以上是关于读卡器程序在本地系统工作,但不能从 IIS 服务器的主要内容,如果未能解决你的问题,请参考以下文章

Web API OData V4 在本地工作,但不在 IIS 上

Windows 7 IIS 在本地工作但不在外部工作

从代码c#自动配置创建IIS服务或其他东西

Fileless Restful WCF 在本地 IIS7 中托管时无法正常工作,但可以在本地运行

在wix安装的下拉列表中绑定IIS本地网站?

System.Diagnostics.Process.Start 不能从 IIS 工作