asp.net 拒绝访问端口“COM1”

62o28rlo  于 2023-08-08  发布在  .NET
关注(0)|答案(6)|浏览(370)

我正在尝试打开COM1端口,但我收到这个错误消息“访问端口'COM1'被拒绝”。我正在写一个通过. NET发送短信的程序。我希望可能会出现错误,但错误“访问被拒绝”不应该出现。请给予我任何解决办法。如果端口需要任何访问权限,那么我该如何做到?

zengzsys

zengzsys1#

首先,请确保串行端口存在。检查设备管理器;右键单击“我的电脑”,从上下文菜单中选择“管理”,选择“设备管理器”,展开“端口Com & LPT”。如果未列出Com 1,则需要在BIOS中启用它。
如果COM 1在那里,则另一个程序使其保持打开状态。对COM 1的访问是独占的;一次只能有一个程序打开它。传真软件或调制解调器可能会打开它,也可能是您自己让它打开的。
这很容易做到。“如果您在打开端口的程序中工作时忘记关闭端口,或者如果发生错误,程序在没有关闭端口的情况下终止,则在下次尝试打开COM 1时,您将收到此消息。只有打开该端口的程序才能关闭它。“Catch”或“Finally”块是关闭端口并防止这种情况发生的好地方。

jtjikinw

jtjikinw2#

使用COM1可能还有其他的功能(自动同步程序往往在COM端口一可用时就很难抓取它们)。
尝试下载PortMon,它会告诉你确切的使用端口。

kwvwclae

kwvwclae3#

由于您标记了此asp.net,您是否尝试使用多线程访问端口?(如在请求时,访问端口,创建连接,发送数据,关闭连接,关闭端口?
如果你是,这也是一个问题。如果我没弄错的话,一次只能有一个线程访问com端口。您需要编写一些代码来确保在给定时间只有一个线程试图访问端口。通常,我会建议一个队列和一个用于该队列的worker来完成这项工作。

fdbelqdn

fdbelqdn4#

可能有另一个程序正在使用串行端口。你试过启动超级终端吗?

9gm1akwq

9gm1akwq5#

如果您试图在IIS下使用ASP.NET,则运行该网站的帐户可能没有设备的许可,以及,也可能存在冲突线程/多访问问题。我需要考虑的是编写一个管理COM端口请求的服务,然后从ASP.NET与该服务进行对话。这将允许对COM端口进行拆分权限和受控的单一访问。任何其他黑客都有可能导致很多问题。

628mspwn

628mspwn6#

这就是我在Windows 10上神奇地工作的原因。可能对其他人有用。简而言之,关闭该端口的“Serial Enumerator”。
设备管理器->端口(COM & LPT)双击有问题的端口打开转到“端口设置”选项卡点击“高级”按钮查看“其他选项”下取消选中“串行枚举器”点击确定退出
我相信这个枚举器是通过操作系统的命令占用端口的,妨碍了它用于其他任何事情。

相关问题