2009-12-28 110 views
3

我有什么应该是一件简单的事情,但我不熟悉.NET和Web程序阻碍了我。我是一位直率的老派C程序员,最近一直在为电子商务网站编写ASP和ASP.NET。从ASP(初学者)运行服务器端EXE

我有一个同步2个数据库的ASP程序。我也有一个VB.NET程序编译成一个EXE,在发生同步之前填充源数据库。在我的脑海里,我知道我应该能够将VB.NET连接起来,因为这是.NET的强大功能。或者,如果我可以从ASP运行EXE,那么对于我的项目来说也是如此。我确实有这两个程序的来源。 ASP脚本是用文本编辑器编写的 - VB是VB 2008 Express。

请假定我对连接程序集等一无所知,因为我不知道 - 我只是在一篇文章中读到它。我更喜欢ASP,但如果有必要,我可以使用ASP.NET脚本来启动EXE。该代码是VBScript的传统ASP,所以我们所有的ASP.NET东西都是VB风格。 C#让我的另一个程序员的头受到伤害,所以为了他的缘故,这将不得不维持VB。

有没有一种方法可以相对容易地启动EXE预同步程序并在ASP同步脚本启动时运行?

服务器是MS Windows Server 2003 SP2/IIS 6.0/.NET版本是2.0.50727.3603。谢谢!顺便说一句 - 我很乐意“学习正确使用.NET”,但是这个项目的时间很短,深入的研究将不得不等待。

编辑:下面阿龙的回答让我最的方式来解决,但我发现:

异常详细信息:System.ComponentModel.Win32异常:访问被拒绝
源错误:第17行:过程1 。开始();
想法任何人?

解答:Aaron的回答如下,加上MapPath中的〜/是网站的虚拟根,并且要运行的文件与此相关。

回答

8

//创建Process类的一个实例,负责启动新进程。

System.Diagnostics.Process process1 = new System.Diagnostics.Process(); 

//设置文件所在的目录

process1.StartInfo.WorkingDirectory = Request.MapPath("~/"); 

//设置要打开

process1.StartInfo.FileName = Request.MapPath("foo.exe"); 

//启动过程中的文件的文件名名

process1.Start(); 
+1

好,离起跑器,但现在我得到这样的: 异常详细信息:System.ComponentModel.Win32Exception:访问被拒绝 源错误: 第17行:process1.Start(); 想法? – Deverill 2009-12-28 20:13:14

+0

我会说这很可能是一个权限问题。默认情况下,他们不希望Web请求能够关闭并在Web服务器上执行文件。确保该文件可以被您的Web服务器运行的用户/组访问(但请确保其不可写入)。 – 2009-12-28 20:17:11

+0

我的ASP.NET计算机帐户和Internet来宾帐户都对可执行文件具有读/执行权限。我给了“每个人”读/执行权限,但这也没有帮助。 – Deverill 2009-12-28 20:24:36

2

如果您有来源因为这两个都可以打开EXE项目并将功能复制到新的类库中,然后在Web应用程序中引用此类库并调用从Web应用程序填充数据库的方法。

+0

也许如果我更复杂,我可以做到这一点,但我恐怕它是在我的头上。我学到的ASP.NET来自一位老ASP程序员,他认为IDE对于不懂如何编程的人来说是一件外国事物。我知道,愚蠢的,但我害怕,因为我会失去在ASP方面引用的东西。虽然谢谢!当我学会正确使用它时,我会记住它! – Deverill 2009-12-28 20:50:54