繁体   English   中英

从控制台应用程序获取响应(Windows中的命令提示符)

[英]Get Response from Console Application (command prompt in windows)

我有Web UI,Client_Console,Loader_Console。

请考虑以下两种情况

方案1:Client_Console将调用WebService(REST),通过该操作,只有我传递输入,它将调用其他控制台应用程序(loader_console),这工作正常,并且我能够从loader_console获取响应并成功显示在Client_console中。

方案2:从Web UI,我需要将输入传递给Client_console,后者将调用Webservice,并将输入传递给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(':');

请帮我解决这个问题

您是否正在从Web应用程序调用控制台客户端? 这意味着控制台应用程序是在非交互式环境(Windows服务会话)中启动的,因此看不到控制台应用程序正在运行。

如果您需要控制台应用程序,则应考虑在打开的会话上运行并监听端口的控制台应用程序,Web应用程序应使用该端口建立与控制台客户端的通信,并且控制台客户端应通过使用该端口接收指令来与Web应用程序进行交互。

您应该建立一个沟通渠道。 有很多方法可以实现它。 尝试以下方法之一:

  1. 将响应发送到注册表项。 (然后阅读注册表Web应用程序): 注册表类

  2. 将响应发送到文本文件,Web应用程序必须打开该文件才能对其进行审阅: 如何:写入文本文件(C#编程指南)

  3. 使用IPC通道进行稳定的通信: 使用新的IPC通道进行.NET远程处理

暂无
暂无

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

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