我有一個C#.NET Web應用程序,它運行在Server 2008 R2,.NET V4,MVC 3,SQL Server 2012上的IIS 7中。該應用程序可以在一堆機器上工作,但是我們剛剛拿到一臺新電腦,而且這臺機器的行爲稍有不同。C#.NET從Web應用程序訪問串行端口
特別是,當應用程序打開System.IO.Ports.SerialPort並寫入時,實際上沒有數據在COM1上傳輸。似乎也沒有例外。該應用程序繼續等待響應,並超時。
如果我關閉了我的應用程序並使用Termite(終端程序)檢查COM端口是否正常工作,那麼數據就會從串口出來。所以串口,驅動程序等似乎沒問題。
如果我的應用程序試圖打開端口時,我有Termite連接到COM1,我得到一個Access Denied異常(如我所期望的)。所以我的應用似乎試圖訪問正確的端口。
但是,如果沒有其他使用COM1的應用程序,我的應用程序不會有任何例外 - 但串行端口不會出現任何異常。
有沒有人有任何關於如何調試這種情況的建議?
這是一個有點不同尋常,一個Web應用程序訪問的低級IO像COM 1直接尤其是串行的,服務的併發請求。你會澄清運行Web應用程序的身份(運行應用程序池的身份)嗎?並檢查了主機的Windows事件嗎? – ZZZ
硬件是一樣的嗎?此COM不需要特殊設置?它是真正的COM還是虛擬COM? – ilansch
感謝AndyH和ilansch。新機器有不同的硬件。該應用程序池是「ASP.NET v4.0」。我的應用程序有一個線程從儀器獲取數據並填充數據庫。其他(Web服務)線程可以檢索數據並管理數據採集線程。 – John