通过ASP.NET页面在服务器上运行程序

通过ASP.NET页面在服务器上运行程序,asp.net,shell,windows-7,iis-7,impersonation,Asp.net,Shell,Windows 7,Iis 7,Impersonation,我们正在使用一种特殊的软件,该软件通常在我们的一台服务器上运行,用于解决一些科学问题和生成复杂图(jpg)。这个程序的问题是它通过命令行运行,不能提供很好的用户体验。为了解决这个问题,我开发了一个ASP.NET页面,它使用System.Diagnostics.Process方法调用服务器程序,并将计算值返回给局域网上的用户 当我在调试模式(Visual Studio 2010)下运行ASP.NET应用程序时,我能够看到程序窗口,并且所有内容都正确计算。然而,当我将其部署到IIS上时,该程序的行为

我们正在使用一种特殊的软件,该软件通常在我们的一台服务器上运行,用于解决一些科学问题和生成复杂图(jpg)。这个程序的问题是它通过命令行运行,不能提供很好的用户体验。为了解决这个问题,我开发了一个ASP.NET页面,它使用System.Diagnostics.Process方法调用服务器程序,并将计算值返回给局域网上的用户

当我在调试模式(Visual Studio 2010)下运行ASP.NET应用程序时,我能够看到程序窗口,并且所有内容都正确计算。然而,当我将其部署到IIS上时,该程序的行为异常。生成的绘图无法正确显示某些值/颜色代码。另外,当ASPNET进程调用程序时,我无法看到程序窗口

有什么线索可以解释为什么会发生这种情况吗?我正在尝试以提升的权限运行ASP.NET应用程序,但不知道如何操作。我在互联网上查阅了数百篇帖子,但找不到任何具体内容。如果有人能给我指出正确的方向,我会很高兴的

系统信息: Windows7主页 IIS 7 Visual Studio 2010(VB.NET)

我是一个初学者,所以如果可能的话,请您提供关键术语的参考资料

谢谢

下面是我如何从ASP.NET应用程序调用该程序-

嗨,Kev,我是这样称呼这个应用程序的:

        Dim luaProcess As Process = New Diagnostics.Process
        luaProcess.StartInfo.FileName = strFemmExePath
        luaProcess.StartInfo.Arguments = " -lua-script=" + strUserLuaFile

        luaProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal
        luaProcess.StartInfo.UseShellExecute = False
        luaProcess.StartInfo.CreateNoWindow = False
        luaProcess.StartInfo.RedirectStandardError = True
        luaProcess.Start()
strFemmExePath变量定义为服务器计算机上的exe路径,即C\Program Files\FEMM\bin\FEMM.exe。参数接受一个脚本文件,该文件包含程序的指令

输出基本上是2个文件:

1个包含计算值的格式化文本文件,我正在使用ASP.NET读取该文件,并在格式化后显示回来


第二个文件是包含图形的位图文件。我正在使用ASP.NET应用程序将此位图转换为jpeg,因为它的大小非常大

您看到console应用程序在开发PC上运行的唯一原因是您在自己的帐户下运行Visual Studio,并且很可能使用内置Cassini服务器。这意味着控制台应用程序将在您的帐户下启动,并将有权显示控制台窗口

在服务帐户下运行时(如IIS和工作进程使用的帐户),这些帐户无法与登录用户的桌面交互,因此永远不会显示任何类型的UI


应用程序无法正确输出绘图的原因可能多种多样,在不知道其工作原理的情况下,很难推测。

您能否详细说明如何调用此命令行应用程序,即向我们展示代码。还有,这个控制台应用程序如何“将计算值返回到我们局域网上的用户”?嗨,凯文,请参阅我的原始帖子,了解代码和输出信息。通过我在互联网上的研究,我了解你对桌面交互的看法。我不明白为什么情节没有正确地表现出来。正如您所注意到的,在调试模式下,它运行得非常好。我想知道我是否可以在我的windows帐户下运行该应用程序,因为该程序将驻留在局域网上,并且没有安全问题。我尝试创建一个新的应用程序池,并将凭据更改为我当前的windows帐户,但这不起作用。该应用程序基本上调用另一个绘制图形的helper exe。数据在两个应用程序之间传递,以便正确显示输出。我有一种感觉,不知何故,另一个exe没有执行,因为父进程是隐藏的。有没有办法让服务与桌面交互?我在互联网上看到过一百万篇帖子,人们诅咒微软删除了这项功能,但没有解决办法。安全性是一个公平的观点,但某些功能是不可避免的。你认为转向Windows XP或任何其他Windows操作系统会有所帮助吗?