活动用户桌面上的IIS打开文件
这是情况:活动用户桌面上的IIS打开文件
我有一个计算机上的视频大集合,它将被连接到我的电视。我想创建一个应用程序,通过我的移动设备在我的电脑上打开我的视频(是的,我知道它存在,我只是为了好玩而努力)
因此,我设置了一个Web服务和一个应用程序消费所述web服务。 webservice收集文件夹/文件的列表,并将它们发送到我的设备,以及可以采取文件路径,并使用默认程序打开它使用System.Diagnostics.Process.Start(path)
当我使用IISExpress,它工作正常,但我想使用IIS。当我使用IIS时,我打开视频文件并听到它在后台播放,但它不显示在监视器上。 VLC出现在任务管理器中,当我杀死它时,声音停止。
我假设问题是应用程序池正在运行的身份,但是当我尝试更改身份时,它没有任何区别。如果有帮助,我正在运行Windows 8.有没有人想过如何让我的应用程序池以我的身份运行,或者打开活动用户桌面上的进程,而不是在应用程序池的名称下打开它?
由于Windows会话隔离,这是很难实现的。 IIS及其工作进程在会话0中,而登录会话通常> 0.通过本机Win32 API,会话0中的某些内容可能在其他会话中启动可执行文件,但我认为这不值得而。
请使用IIS Express,因为它直接在您的登录会话中运行,并且根本不需要跨越会话边界。
关于Process.Start()问题,我认为除了更改应用程序池的标识之外,还需要转到管理工具下的服务,然后选中“允许该服务与桌面交互”复选框万维网发布服务的登录选项卡。我认为这已经在以下问题中得到解决:System.Diagnostics.Process.Start not work from an IIS
现在,如果我必须将这样一个应用程序放在一起,我会尝试我稍微不同的方法:除了已经有的,我会建立一个小桌面应用程序,当您登录到桌面时自动启动并位于系统托盘中。它将侦听来自asp.net应用程序的命名管道或tcp或类似的消息,并从正确的用户上下文中启动进程。这似乎是一种更稳定的方法,它还可以让您将Web服务器与将播放视频的桌面分开。
不幸的是,这似乎并没有奏效。我可以在任务管理器中看到“选择一个应用程序”(或者程序用于选择默认程序),但没有出现。 我喜欢你的另一个想法,但我的目标是保持简单。我只是切换到Plex :) –
你在段落1中提出的建议不会工作,因为会话隔离。第2款的建议是可行的,但编码仍然复杂。 –
这可能是一个愚蠢的问题,但是有没有办法运行IIS Express而不运行VS? –
您可能应该花一些时间在IIS.net上完全学习IIS Express,http://www.iis.net/learn/extensions/using-iis-express/running-iis-express-from-the-command-line –