【发布时间】:2013-09-28 10:50:07
【问题描述】:
我有一个 C#.NET Web 应用程序,它在 Server 2008 R2、.NET v4、MVC 3、SQL Server 2012 上的 IIS 7 中运行。该应用程序已经在很多机器上运行,但我们刚刚有了一个新的计算机和这台机器上的行为略有不同。
特别是,当应用打开 System.IO.Ports.SerialPort 并写入时,COM1 上实际上没有数据传输。似乎也没有抛出异常。应用继续等待响应,然后超时。
如果我关闭我的应用程序,并使用Termite(终端程序)检查 COM 端口是否正常工作,数据从串行端口输出就可以了。所以串口、驱动等好像没问题。
如果在我的应用程序尝试打开端口时将 Termite 连接到 COM1,我会收到拒绝访问异常(如我所料)。所以我的应用程序似乎确实在尝试访问正确的端口。
但如果没有其他任何东西使用 COM1,我的应用程序不会出现异常 - 但串行端口不会输出任何内容。
有人对如何调试这种情况有任何建议吗?
【问题讨论】:
-
Web 应用程序直接访问像 COM 1 这样的低级 IO 有点不寻常,特别是串行的,服务于并发请求。能否澄清一下运行 Web 应用程序的身份(运行应用程序池的身份)?并且您检查过主机的 Windows 事件吗?
-
硬件一样吗?这个 COM 不需要特殊设置?是真实的com还是虚拟的com?
-
感谢 AndyH 和 ilansch。新机器确实有不同的硬件。应用程序池是“ASP.NET v4.0”。我的应用程序有一个线程,它从仪器获取数据并填充数据库。其他(Web 服务)线程可以检索数据并管理数据获取线程。
标签: c# .net windows iis serial-port