在服务器而不是客户端上启动进程

时间:2014-05-02 14:14:03

标签: c# asp.net process client-server code-behind

我在ASP.NET表单中有一个按钮,当你按下它时,在代码隐藏后它会运行一个Process.Start()命令。 我的PC充当服务器,当我从客户端按下按钮时,它将尝试在客户端的PC上运行该命令。如何在服务器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,除非先进行身份验证,否则无法调用该函数。

2 个答案:

答案 0 :(得分:0)

服务器端写的任何内容都将在服务器上执行。对于您上面给出的代码,默认情况下,Process将在服务器上启动。

答案 1 :(得分:0)

Process.Start总是在调用函数的机器上启动进程,因此在您的情况下,进程始终在服务器上启动。当失败时,ASP.Net会生成一个错误页面,这是您在浏览器中看到的。那为什么它有时会成功,有时会失败呢?这里没有足够的背景说,但我猜这两个案例botPath有不同的值。您可以尝试对其进行硬编码以验证该假设。

Process Monitor这样的工具会向您显示尝试启动新进程,以防您怀疑它们是否都在服务器上启动。它还会记录可执行文件的路径,这可能有助于解决问题。