繁体   English   中英

从ASP.NET(C#)调用Powershell脚本,但不等待结果

[英]Calling Powershell script from ASP.NET (C#), but not wait for results

我有一个Powershell脚本,我想从网页上调用它。 我有C#代码,并且可以运行,但是脚本最终正在执行一些SQL任务,但这些任务返回的速度并不很快。 它没有要显示在网页上的任何结果,因此我似乎无法使网页触发脚本然后继续前进。 即使没有任何返回内容,它也会在浏览器底部始终显示“正在等待服务器...”。 最终页面超时。

我尝试使用InvokeAsync()选项,但是它仍然给我相同的结果。 使用Process.Start()在调用Powershell脚本然后继续进行时会更好吗? 谢谢,格雷格

Runspace runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
string cmdArg = scriptfile + " " + TextBox4.Text + " " + RadioButtonList1.SelectedValue;
//Collection<PSObject> psresults;
using (Pipeline pipeline = runspace.CreatePipeline())
{
    pipeline.Commands.AddScript(cmdArg);
    //psresults = pipeline.Invoke();
    pipeline.InvokeAsync(); // InvokeAsync calls it as a background process so it won't make the web page timeout.
}

runspace.Close();

您正在异步使用Runspace管道,但是您同步打开了Runspace

尝试使用:

runspace.OpenAsync();

希望有帮助:)

您不应该将运行空间放在using子句中-它会尝试在invokeasync调用之后立即将其处置并阻塞。 相反,您应该将运行空间放在回调中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM