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

时间:2011-07-14 16:27:49

标签: asp.net shell windows-7 iis-7 impersonation

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

当我在调试模式(Visual Studio 2010)中运行ASP.NET应用程序时,我能够看到程序窗口,并且所有内容都已正确计算。但是,只要我在IIS上部署它,程序就会表现得很奇怪。生成的图表未正确显示某些值/颜色代码。此外,当ASPNET进程调用程序时,我无法看到程序窗口。

为什么会发生这种情况的任何线索?我试图使用提升的权限运行ASP.NET应用程序,但不知道如何做到这一点。我已经在互联网上检查了数百个帖子,但无法找到任何具体内容。如果有人能指出我正确的方向,我会很高兴的。

系统信息: Windows 7 Home 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。 Argument采用一个脚本文件,其中包含程序的说明。

输出基本上是2个文件:

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

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

1 个答案:

答案 0 :(得分:1)

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

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

为什么你的应用程序没有正确输出图表的原因可能很多,而且不知道它是如何工作的,很难推测。