Pipelineexecutor не поддерживает это ключевое слово в ASP.NET
Я пытаюсь получить статус сценария в asp.net, но он не поддерживает это ключевое слово в функции PiplelineExecutor. Я дал свой код. ниже.
pipelineExecutor = new PipelineExecutor(runSpace,this, Script); pipelineExecutor.OnDataReady += new PipelineExecutor.DataReadyDelegate(pipelineExecutor_OnDataReady); pipelineExecutor.OnDataEnd += new PipelineExecutor.DataEndDelegate(pipelineExecutor_OnDataEnd); pipelineExecutor.OnErrorReady += new PipelineExecutor.ErrorReadyDelegate(pipelineExecutor_OnErrorReady); pipelineExecutor.Start();
private void pipelineExecutor_OnDataEnd(PipelineExecutor sender) { if (sender.Pipeline.PipelineStateInfo.State == PipelineState.Failed) { AppendLine(string.Format("Error in script: {0}", sender.Pipeline.PipelineStateInfo.Reason)); } else { AppendLine("Ready."); } } private void pipelineExecutor_OnDataReady(PipelineExecutor sender, ICollection<PSObject> data) { foreach (PSObject obj in data) { AppendLine(obj.ToString()); } } void pipelineExecutor_OnErrorReady(PipelineExecutor sender, ICollection<object> data) { foreach (object e in data) { AppendLine("Error : " + e.ToString()); } }
Файл класса PipelineExecutor
public PipelineExecutor(Runspace runSpace,ISynchronizeInvoke invoker,string command) { this.invoker = invoker; // initialize delegates synchDataReady = new DataReadyDelegate(SynchDataReady); synchDataEnd = new DataEndDelegate(SynchDataEnd); synchErrorReady = new ErrorReadyDelegate(SynchErrorReady); // initialize event members stopEvent = new ManualResetEvent(false); waitHandles = new WaitHandle[] { null, stopEvent }; // create a pipeline and feed it the script text pipeline = runSpace.CreatePipeline(command); // we'll listen for script output data by way of the DataReady event pipeline.Output.DataReady += new EventHandler(Output_DataReady); pipeline.Error.DataReady += new EventHandler(Error_DataReady); } void Error_DataReady(object sender, EventArgs e) { // fetch all available objects Collection<object> data = pipeline.Error.NonBlockingRead(); // if there were any, invoke the ErrorReady event if (data.Count > 0) { StoppableInvoke(synchErrorReady, new object[] { this, data }); } } /// <summary> /// Start executing the script in the background. /// </summary> public void Start() { if (pipeline.PipelineStateInfo.State == PipelineState.NotStarted) { // close the pipeline input. If you forget to do // this it won't start processing the script. pipeline.Input.Close(); // invoke the pipeline. This will cause it to process the script in the background. pipeline.InvokeAsync(); } }
Что я уже пробовал:
попробовал тот же код выше. Он выдает ошибку как "
Error 25 The best overloaded method match for 'Codeproject.PowerShell.PipelineExecutor.PipelineExecutor(System.Management.Automation.Runspaces.Runspace, System.ComponentModel.ISynchronizeInvoke, string)' has some invalid arguments"
CHill60
Ошибка вполне понятна - вы пытаетесь создать новый PipelineExecutor, но не указали правильные параметры
vinodh muthusamy
Нет, я правильно передал входной параметр.
Можете ли вы сказать, как рассогласование параметров.
CHill60
"Нет, я правильно передал входной параметр." - Нет, не видел.
"Можете ли вы сказать, как несоответствие параметров." - Да ... Ошибка 25 лучший перегруженный метод подходит для ' Codeproject.PowerShell.PipelineExecutor.PipelineExecutor(Системы.Управления.Автоматизация.Пространство выполнения.Пространство Выполнения, Системы.ComponentModel.ISynchronizeInvoke, string) ' имеет некоторые недопустимые аргументы
vinodh muthusamy
частная пространства пространства;
string Script = " java-jar D:\\jenkins-cli.jar -с http://172.16...:8080/ create-job test12 < C:\\Projects\\sample\\xml\\Test12.xml";
Это вход, который я передал для этого piplelineExecutor
pipelineExecutor = новый PipelineExecutor(runSpace, this, Script);
нужно ли мне здесь менять какой-то код?
CHill60
Я думаю runSpace
это система управления.Автоматизация.Пространство выполнения.Пространства?
Я это вижу Script
являться строкой.
Является this
система.ComponentModel.ISynchronizeInvoke ? Скорее всего, нет.
vinodh muthusamy
Я не могу понять, что вы пытаетесь сказать. можете ли вы объяснить или решить мою проблему
Спасибо вам
CHill60
Метод ожидает 3 параметра.
Первый из них должен быть типа System.Management.Автоматизация.Пространство выполнения.Пространство выполнения. Вы проходите в нечто под названием runSpace - я предполагаю, что это правильный тип.
Третий параметр должен быть строкой. Я вижу, что переменный скрипт, который вы передаете, определенно является строкой.
Второй параметр должен реализовывать систему.ComponentModel.ISynchronizeInvoke. Вы передаете "это" - я подозреваю, что вы на самом деле хотели передать this.invoker