2014-05-02 115 views
0

我有一個ASP.NET的形式,當你按下它,在代碼隱藏它會運行的Process.Start()命令按鈕啓動一個進程。 我的電腦充當服務器,當我從客戶端按下按鈕時,它會嘗試在客戶端的PC上運行該命令。我怎樣才能讓這個命令在服務器上運行?服務器,而不是客戶端

ASP的控制:

<asp:Button ID="ButtonRun" runat="server" Font-Size="XX-Large" Text="Run" 
onclick="ButtonRun_Click" /> 

代碼隱藏功能:

protected void ButtonRun_Click(object sender, EventArgs e) 
    { 
     Process.Start(MapPath(botPath)); 
    } 

當然,這是保護的所有密碼。 IE,除非您先進行身份驗證,否則無法調用該功能。寫在服務器側

+0

你怎麼能做到這一點從瀏覽器????? – Habib

+0

@Habib,請參閱編輯。 –

+0

那麼上面的代碼永遠不會在客戶端啓動一個進程。它將啓動服務器上的進程。不太確定你如何測試它。 – Habib

回答

0

任何將在服務器上執行。對於上面給出的代碼,默認情況下,Process將在服務器上啓動。

+0

我試着對,這是發生了什麼事遠程調試運行它在我的手機上。當它設置爲true時,沒有任何反應。 –

0

Process.Start總是開始的地方被調用函數機器上的過程,所以你的情況的過程中始終在服務器上啓動。如果失敗,ASP.Net將生成一個錯誤頁面,這是您在瀏覽器中看到的內容。那爲什麼它有時會成功,有時會失敗?這裏沒有足夠的背景可以說,但我猜想botPath在這兩種情況下有不同的值。您可以嘗試對其進行硬編碼以驗證該假設。

Process Monitor的工具會告訴你開始一個新的進程的企圖,如果你有疑問,他們都正在啓動的服務器上。它還會記錄可執行文件的路徑,這可能有助於解決問題。

+0

錯誤頁面是否表示可執行文件不是有效的OS應用程序,意味着它不會真正在服務器上啓動它? –

+0

這是一個錯誤,因此該進程無法在任何地方啓動。它試圖在服務器上啓動它,但可執行文件存在問題。 – bmm6o

+0

好的,牢記這一點,當我調試它時,一切都很好。當我使用服務器PC瀏覽網站時,一切都很好。當我使用客戶端瀏覽網站時,它不會執行任何操作(客戶端PC)或產生錯誤(客戶端移動設備) –