Превращаю мои комментарии в ответ ...
Код последовательного порта - это код на стороне сервера. Вы не можете сделать это на клиенте с ASP.NET.
Создание элемента управления ActiveX или другого жирного клиента - это большая нагрузка, но просто не очень хорошая идея.
Я бы порекомендовал вам продолжить с приложением WinForms для кода, в котором вам нужен сканер, и добавить в него меню, позволяющее запустить отдельное веб-приложение ASP.NET для доступа к отчетам / данным.
Если вы хотите сделать его более «плавным» для пользователей, вы можете добавить форму с элементом управления WebBrowser, который загружает ваш сайт для доступа к отчетам / данным. Для них это будет просто «частью приложения».
ЭТО СКАЗАЛ, что в зависимости от устройства, которое вы подключили к порту, может быть даже более простой вариант.
Один из наших сканеров штрих-кода поставляется с программным обеспечением, которое просто берет данные штрих-кода при их сканировании и вставляет их в любой открытый документ, имеющий фокус. Если вы работаете в Блокноте, отсканированные данные вставляются в Блокнот. Если у вас открыто веб-приложение и курсор в текстовом поле, данные просто вставляются туда.
Это более простой вариант для реализации, НО это сложнее для пользователей, потому что, если они не являются техническими, они назовут вас интересующимися, почему штрих-код издает звуковой сигнал, но не заполняет текстовое поле. (Ответ будет «Потому что ваш курсор не находится в текстовом поле или форма не имеет фокуса»)
Итак, я возвращаюсь к рекомендации № 1.