2015-08-24 2 views
0

У меня есть веб-интерфейс, клиент_консоль, Loader_Console.Получить ответ от консольного приложения (командная строка в окнах)

Пожалуйста, обратите внимание мое ниже двух сценариев

Сценарий 1: Client_Console будет вызывать WebService (REST), через что только я проходящими входы это будет вызывать другое приложение консоли (loader_console) Это работает отлично и я получаю ответ от loader_console и успешно отображается в Client_console.

Сценарий 2: Из веб-интерфейса. Мне нужно передать Входы в Client_console, который вызовет веб-сервис и передаст вход в Loader_console.

Теперь моя проблема: я не могу получить ответ от Client_Console, когда все операции выполнены.

Ниже я включать некоторую часть моего кода

 Process InvokeTool = new Process(); 
     InvokeTool.StartInfo.FileName = toolToInvoke; 


     InvokeTool.StartInfo.RedirectStandardInput = true; 

     InvokeTool.StartInfo.CreateNoWindow = true; 
     InvokeTool.StartInfo.RedirectStandardOutput = true; 
     InvokeTool.StartInfo.UseShellExecute = false; 

     try 
     { 
      InvokeTool.Start(); 
     } 
     catch (Exception ex) 
     { 
      var exceptn = ex.ToString(); 
      lbl_Response.Text = "ERROR : Could not find the tool specified in the client json config file"; 
      return; 
     } 

     StreamWriter writer = InvokeTool.StandardInput; 


     writer.WriteLine(sourcefolderURL); 
     writer.WriteLine(jsonFileLocation); 
     writer.WriteLine(fieldSeperator); 
     writer.WriteLine("NO"); 

     StreamReader reader = InvokeTool.StandardOutput; 
     //InvokeTool.Kill(); 
     //InvokeTool.CloseMainWindow(); 

     var result = reader.ReadToEnd(); 
     string[] responseArray = result.Split(':'); 

Пожалуйста, помогите мне решить эту проблему

ответ

1

вы звоните консольный клиент с веб-приложения? это означает, что консольное приложение запускается в неинтерактивной среде (сеанс службы Windows), поэтому вы не можете видеть консольное приложение.

Если вам нужна консольная аппликация, вы должны подумать о консольном приложении, запущенном на открытом сеансе и прослушивании в порту, веб-приложение должно установить связь с клиентом консоли с помощью этого порта, а клиент консоли должен взаимодействовать с веб-приложением, получая инструкции с использованием этого порта.

Вы должны установить канал связи. Есть много способов добиться этого. Попробуйте один из них:

  1. Отправить ответ на запись в реестре. (Затем прочитать реестр форм веб-приложение): Registry Class

  2. Отправить ответ на текстовый файл, веб-приложение должно открыть файл просмотреть его: How to: Write to a Text File (C# Programming Guide)

  3. укрепите связь с использованием канала IPC: .NET Remoting Using a New IPC Channel
+0

Hi Juan Да Я вызываю Console_client из веб-приложения. Можно ли получить ответ формы Console_Client (когда операция выполнена)? –

+0

Я улучшил ответ с более подробной информацией и сценариями – JuanK

Смежные вопросы