поведение вызова функции неуправляемой dll отличается между консольным приложением, приложением asp.net с iis express и приложением asp.net на реальном iis

[Решено] такое поведение на самом деле было вызвано 64-битной версией программы (dll несовместима с 64-битной). Когда программа работает в 32-битном режиме, все нормально (на всех платформах).

На самом деле я интегрирую фрагмент кода в свое приложение, чтобы прочитать чип-карту, подключенную к USB-порту. Код был предоставлен французским социальным обеспечением (dll и оболочка .net неуправляемого кода), поэтому у меня нет ни документации, ни поддержки по этому вопросу. dll была построена поверх PKCS #11

Я сделал разработку в консольном приложении, и оно работает хорошо.

Я интегрирую это в свой asp.net webapp .net framework 4.0 (да, чип-карта будет подключена к USB-порту сервера), и начинаются проблемы.

  • с iisexpress такое же поведение, как и с консольным приложением, оно работает хорошо
  • на реальном iis у меня нет исключений, но код действует так, как будто чип-карты нет. Не исключение, просто он не определяет карту.
  • все еще на реальном iis я изменил тип пула приложений на локальную службу. При этом чип-карта теперь обнаружена, но у меня есть ошибка где-то в коде (действительно неясный код, я его не пишу. В какой-то строке кода он ожидает получить объект, который является нулевым, и он завершился на нулевой ссылке исключение).

Я не знаю, что делать сейчас. так что, ребята, если у вас есть какие-то идеи, которые могут помочь мне понять это поведение и заставить его работать на реальных iis, я принимаю это. Теперь у меня нет других решений.

Спасибо за вашу помощь !


person JulienG    schedule 18.12.2020    source источник
comment
blog.lextudio.com/ Вам нужна сложная архитектура с несколькими процессами в разных сеансах, чтобы правильно решить проблему, или просто запустите IIS Express, если это приемлемо.   -  person Lex Li    schedule 18.12.2020
comment
По вашему описанию не могу определить вашу проблему. Можете ли вы предоставить больше информации о вашей проблеме? Например, есть ли какие-либо сообщения об ошибках в реальном iis?   -  person samwu    schedule 18.12.2020


Ответы (1)


[Решено] такое поведение на самом деле было вызвано 64-битной версией программы (dll несовместима с 64-битной). Когда программа работает в 32-битном режиме, все нормально (на всех платформах)

person JulienG    schedule 23.02.2021