Вызов сценария Powershell из ASP.NET (C #), но не ожидание результатов - PullRequest
0 голосов
/ 16 марта 2012

У меня есть скрипт 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();

Ответы [ 2 ]

0 голосов
/ 17 марта 2012

Вы не должны помещать пространство выполнения в предложение using - оно будет пытаться утилизировать его сразу после вызова invokeasync и заблокировать.Вместо этого вы должны избавиться от пространства выполнения в обратном вызове.

0 голосов
/ 17 марта 2012

Вы используете конвейер Runspace асинхронно, но вы открыли Runspace синхронно

Попробуйте использовать:

runspace.OpenAsync();

Надеюсь, что помогло:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...