2009-12-28 113 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