asp.net中操作串口
经常面要在asp.net网站中打开和操作串口,有时会出现串口拒绝访问的问题,今天特定做了个试验,环境:Windows2019虚拟机,asp.net4.6
方案1:
同一套程序,部署两个网站,分别使用两个不同的应用程序池。测试结果如下:
1. 一个网站打开串口时,另一个网站打开时提示串口访问被拒绝,关闭串口操作正常。
2. 网站关闭串口后,另一网站可以正常打开。
3. 已打开串口的网站执行 HttpRuntime.UnloadAppDomain()重启网站后,另一网站可以正常打开串口。即网站重启时会自动关闭串口。
4. 点击IIS中的网站“重新启动”,有时一次并不会触发重启,需要多点几次。或点击“停止”再点击“启动”。
方案2:
同一套程序,部署两个网站,两个网站使用同一个应用程序池。测试结果如下:
好像和方案1差不多。
结论:
还是尽量使用不同的应用程序池,如果打开串口时被拒绝,直接执行HttpRuntime.UnloadAppDomain()可以释放串口占用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | public partial class WebForm1 : System.Web.UI.Page { static SerialPort port = new SerialPort(); protected void Page_Load( object sender, EventArgs e) { if (! this .IsPostBack) port.PortName = "COM1" ; } protected void Button1_Click( object sender, EventArgs e) { try { port.Open(); this .TextBox1.Text = "已打开" ; } catch (Exception ex) { this .TextBox1.Text = ex.Message; } } protected void Button2_Click( object sender, EventArgs e) { try { port.Close(); this .TextBox1.Text = "已关闭" ; } catch (Exception ex) { this .TextBox1.Text = ex.Message; } } protected void Button3_Click( object sender, EventArgs e) { this .TextBox1.Text = "isOpen: " + port.IsOpen.ToString() + ",启动时间:" + Global.启动时间.ToString() ; } protected void Button4_Click( object sender, EventArgs e) { HttpRuntime.UnloadAppDomain(); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本