2011-10-11 1 views
0

내 등록 도구에 후보자가 ID에서 개인 정보 (예 : 이름, 주소, ..)를로드 할 수있는 기능이 있습니다.벨기에 신원 카드 기능이 IIS W3WP.exe에서 충돌 함

VS2010의 내장 웹 서버로 응용 프로그램을 컴파일하고 단추를 눌러 ID 정보를 텍스트 상자로로드해도 아무런 문제가 없습니다. IIS를 사용하여 localhost에 게시하면 버튼을 누르면 충돌이 발생합니다.

이 내 이벤트 뷰어에서받은 것입니다 : 나는 64 비트 노트북에서 일하고 있어요

 0 
    APPCRASH 
    Not available 
    0 
    w3wp.exe 
    7.5.7601.17514 
    4ce7a5f8 
    KERNELBASE.dll 
    6.1.7601.17651 
    4e211319 
    e0434352 
    0000b9bc 

    0 
    7e796e20-f3e1-11e0-8ea3-60eb69b01829 
    0 

, 벨기에 신분증 SDK를 사용합니다.

여기에서 버튼에 대한 코드를 찾을 수 있습니다.

 protected void Button1_Click(object sender, EventArgs e) 
    { 
     //READ eID 
     ClearTextBoxes(); 
     try 
     { 
      BEID_ReaderSet ReaderSet; 
      ReaderSet = BEID_ReaderSet.instance(); 

      BEID_ReaderContext Reader; 
      Reader = ReaderSet.getReader(); 

      bool bCardPresent = Reader.isCardPresent(); 

      if (Reader.isCardPresent()) 
      { 
       if (Reader.getCardType() == BEID_CardType.BEID_CARDTYPE_EID 
        || Reader.getCardType() == BEID_CardType.BEID_CARDTYPE_FOREIGNER 
        || Reader.getCardType() == BEID_CardType.BEID_CARDTYPE_KIDS) 
       { 
        try 
        { 
         Load_eid(Reader); 
        } 
        catch (Exception ex) 
        { 
         labelEx.Text = ex.Message; 
        } 
       } 
       else 
       { 
        labelEx.Text = "No valid card, please insert a valid IDcard"; 
       } 
      } 

      else 
      { 
       labelEx.Text = "No IDcard found, please insert your card"; 
      } 

      BEID_ReaderSet.releaseSDK(); 
     } 

     catch (BEID_Exception ex) 
     { 
      BEID_ReaderSet.releaseSDK(); 
      labelEx.Text = "No valid cardreader found, please connect a valid reader"; 

     } 

     catch (StackOverflowException ex) 
     { 
      BEID_ReaderSet.releaseSDK(); 
      labelEx.Text = "Error: " + ex; 
     } 

     catch (OutOfMemoryException ex) 
     { 
      BEID_ReaderSet.releaseSDK(); 
      labelEx.Text = "Error: " + ex; 
     } 
    } 

     private void Load_eid(BEID_ReaderContext Reader) 
    { 
     try { 
     BEID_EIDCard card; 
     card = Reader.getEIDCard(); 
     if (card.isTestCard()) 
     { 
      card.setAllowTestCard(true); 
     } 

     BEID_EId doc; 
     doc = card.getID(); 

     txtFirstN.Text = doc.getFirstName(); 
     txtLastN.Text = doc.getSurname(); 
     txtDOB.Text = doc.getDateOfBirth(); 

     //CUT GETSTREET IN STREET AND HOUSENO 
     string street= doc.getStreet(); 
     string[] words = street.Split(' '); 

     txtStreet.Text = words[0]; 
     txtHouseNo.Text = words[1]; 

     txtPostalCode.Text = doc.getZipCode(); 
     txtCity.Text = doc.getMunicipality(); 
     //sText += "Country = " + doc.getCountry() + "\r\n"; 

     } 

     catch (Exception ex) 
     { 
      BEID_ReaderSet.releaseSDK(); 
      labelEx.Text = "Error: " + ex; 
     } 
    } 

이 문제를 어떻게 해결할 수 있습니까?

+1

서버에서이 코드를 실행하고 있습니다. 따라서 카드 판독기가 서버에 연결되어 있어야합니다. 브라우저를 사용하는 사람을 식별하지 않습니다. (개발 환경에서는 클라이언트와 서버가 동일 할 수 있습니다). – GvS

답변

1

응용 프로그램 풀이 카드 판독기에 액세스 할 수있는 권한이없는 사용자로 실행되고있을 가능성이 큽니다. 이 경우 드라이버 오류이 발생하여 w3wp.exe 프로세스가 중단 될 수 있습니다.

전용 사용자로 변경하고이 사용자에게 적절한 권한을 할당하거나 테스트 목적으로 localsys에서 실행되도록 설정하십시오.

+0

사실 64 비트 PC에서 32 비트 DLL을 사용하지 않을 수 있습니까? 나는 그것이 win32에서만 호환되는 문서에서 볼 수 있습니다. 내 응용 프로그램 풀에서 32 비트 응용 프로그램 사용을 True로 설정했습니다 – Thomas

+1

VS에서 컴퓨터에서 행복하게 실행할 수 있다는 설명을 할 수 없습니다. – Aliostad

+0

어떻게 전용 사용자로 바꿀 수 있고 적절한 권한을 할당 할 수 있습니까? 저는 IIS가 새로 도입되었습니다. – Thomas

0

코드를 Javascript로 이동하십시오 (브라우저/html에서).

IIS 사용자가 ID 리더 API와 통신 할 권한이 없다고 생각합니다.

+0

(어떻게) ID 리더 API와 통신 할 수있는 권한을 부여 할 수 있습니까? – Thomas

+0

서버에서 ID 카드 판독기를 사용 하시겠습니까? 브라우저를 사용하는 사람으로부터 ID 카드를 읽는 것이 더 합리적입니다. – GvS

+0

벨기에 ID 카드 SDK의 문서에서 그들은 서버 측 코드를 제공했습니다. 나는 자바 스크립트로 만들 충분한 시간이 없다는 것을 두려워한다. 나중에 다시 살펴 보겠습니다. – Thomas