当应用程序在Visual Studio(IIS Express)中运行时,System.Windows.Form会显示,但在部署到IIS管理器时则不会显示

时间:2017-03-10 22:54:45

标签: c# asp.net winforms iis

项目的快速背景......我正在运行一个Web应用程序,允许用户控制和读取连接到服务器计算机的设备(在我的情况下是Intel NUC)中的数据。

我的问题是我正在尝试检测在后台线程中运行的System.Windows.Form内的全局鼠标事件。

EXEC msdb..sp_help_job @job_name = 'mySQLJob', @job_aspect = 'JOB'

现在,当我通过Visual Studio 2017(在Debug或Release中)通过IIS Express运行应用程序时,它会启动我的应用程序,打开一个Chrome实例,并成功创建一个Windows窗体,我能够听取任何鼠标事件(在这种情况下,鼠标按下并滚动)并用它做我想做的事。

但是,当我将其发布到我在本地运行的IIS管理器时,Windows窗体永远不会显示,我无法收听鼠标事件。

任何建议都会有所帮助!

1 个答案:

答案 0 :(得分:1)

我不认为这是可能的。在Visual Studio中iisexpress下运行您的网站时,它在普通应用程序中作为托管环境运行。普通应用程序可以随时显示窗口,因此没有问题。

与此相反,iis(以及asp.net工作进程)作为服务运行。服务应该在后台运行,无需任何用户交互。此外,为了维护服务器的安全性,工作进程在受限制的用户帐户下运行。

最后,使用默认设置,工作进程在第一个http请求进入时启动,并在一些空闲时间后停止。与此同时,您的所有鼠标移动都将丢失,因为您的Web应用程序根本无法运行。

我建议您尝试其他解决方案,可能是:

  • 使用winforms程序获取鼠标坐标,传递给网络服务器(例如使用命名管道)
  • 您使用某种api访问外部设备,而不是鼠标坐标
  • 您没有使用网络服务器完成该工作,将一些远程终端解决方案与您的winforms应用程序结合使用

要阅读的其他资源(可能还有更多):