[Решено] такое поведение на самом деле было вызвано 64-битной версией программы (dll несовместима с 64-битной). Когда программа работает в 32-битном режиме, все нормально (на всех платформах).
На самом деле я интегрирую фрагмент кода в свое приложение, чтобы прочитать чип-карту, подключенную к USB-порту. Код был предоставлен французским социальным обеспечением (dll и оболочка .net неуправляемого кода), поэтому у меня нет ни документации, ни поддержки по этому вопросу. dll была построена поверх PKCS #11
Я сделал разработку в консольном приложении, и оно работает хорошо.
Я интегрирую это в свой asp.net webapp .net framework 4.0 (да, чип-карта будет подключена к USB-порту сервера), и начинаются проблемы.
- с iisexpress такое же поведение, как и с консольным приложением, оно работает хорошо
- на реальном iis у меня нет исключений, но код действует так, как будто чип-карты нет. Не исключение, просто он не определяет карту.
- все еще на реальном iis я изменил тип пула приложений на локальную службу. При этом чип-карта теперь обнаружена, но у меня есть ошибка где-то в коде (действительно неясный код, я его не пишу. В какой-то строке кода он ожидает получить объект, который является нулевым, и он завершился на нулевой ссылке исключение).
Я не знаю, что делать сейчас. так что, ребята, если у вас есть какие-то идеи, которые могут помочь мне понять это поведение и заставить его работать на реальных iis, я принимаю это. Теперь у меня нет других решений.
Спасибо за вашу помощь !