Сбой функции идентификационной карты Бельгии на IIS W3WP.exe

В моем инструменте регистрации есть функция, которая позволяет кандидатам загружать свою личную информацию (например, имя, адрес и т. Д.) Из идентификатора.

Когда я компилирую приложение со встроенным веб-сервером в VS2010 и нажимаю кнопку, чтобы загрузить информацию об идентификаторе в текстовые поля, проблем не возникает. Когда я публикую его на локальном хосте (с IIS), он вылетает, когда я нажимаю кнопку.

Вот что я получил в моем средстве просмотра событий:

     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 

Я работаю на 64-битном ноутбуке, использую Бельгию Identity Card 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;
        }
    }

Как я могу решить эту проблему?


person Thomas    schedule 11.10.2011    source источник
comment
Вы выполняете этот код на сервере. Итак, ваш кардридер должен быть подключен к серверу. Вы не идентифицируете человека, использующего браузер. (В вашей среде разработки клиент и сервер могут быть одинаковыми).   -  person GvS    schedule 11.10.2011


Ответы (2)


Скорее всего, ваш пул приложений работает под пользователем, у которого нет прав доступа к устройству чтения карт. Это может вызвать ошибку драйвера, которая может привести к сбою процесса w3wp.exe.

Измените его на специального пользователя и назначьте ему соответствующие привилегии или в целях тестирования настройте его на запуск под localsys.

person Aliostad    schedule 11.10.2011
comment
неужели я использую 32-битную dll на 64-битном компьютере? Я вижу в документации, что он совместим только с win32. В моем пуле приложений я установил для параметра Enable 32-bit app значение True. - person Thomas; 11.10.2011
comment
Это не может объяснить, что вы успешно запускаете его на своем компьютере в VS. - person Aliostad; 11.10.2011
comment
как я могу изменить его на выделенного пользователя и назначить соответствующие привилегии, я новичок в IIS - person Thomas; 11.10.2011

Переместите свой код в Javascript (в браузере / html).

Я не думаю, что у пользователя IIS есть разрешение на общение с API считывателя идентификаторов.

person GvS    schedule 11.10.2011
comment
(как) вы можете предоставить разрешения для связи с API считывателя идентификаторов? - person Thomas; 11.10.2011
comment
Вы уверены, что хотите использовать устройство чтения ID-карт на сервере? Разумнее читать ID-карту от человека, использующего браузер. - person GvS; 11.10.2011
comment
это имеет смысл, но в документации к бельгийскому SDK идентификационной карты они предоставили код для серверной части. Боюсь, что у меня не хватит времени на то, чтобы встроить javascript. Но я проверю это позже - person Thomas; 11.10.2011
comment
Пример для Javascript немного скрыт (стр. 39–43). Код для C # используется в приложениях Windows.Forms. Теперь ваше решение в порядке, если ваши пользователи подключают свой ридер непосредственно к вашему серверу. - person GvS; 11.10.2011