0

我想运行一个带有命令行参数的 GUI 程序,该程序通过添加一些 xml 标签来处理文本。所以文本必须在文件系统上,并且 xml 在同一目录中创建。我尝试了两个:控制台应用程序和 Web 服务。为什么WS不起作用?我该如何调试它?

此代码按我的意愿工作:

using System.Diagnostics;
using System.IO;

namespace ConsoleApplication1
{
  class Program
  {
    private static void ExecuteConsoleApp(string filepath)
    {
      string dir = @"E:\temp\";

      ProcessStartInfo startInfo = new ProcessStartInfo();
      startInfo.FileName = dir + @"App.exe";
      startInfo.Arguments = "EN /R /U /F\"" + filepath + "\"";

      Debug.WriteLine(startInfo.FileName + " " + startInfo.Arguments);

      using (Process exeProcess = Process.Start(startInfo))
      {
         exeProcess.WaitForExit(5000); // Wait a while
         exeProcess.Kill(); // Then kill 
      }
    }

    static void Main(string[] args)
    {
      ExecuteConsoleApp(@"E:\temp\temp.txt");
    }
  }
}

为什么这个没有?我的意思是该进程是在 Session ID=0 中创建的,但没有 GUI 也没有 xml:我不知道发生了什么......

using System.IO;
using System.Diagnostics;
using System.ServiceModel.Activation;

namespace WCF_Exalead
{
  [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
  public class Service : IService
  {
    public void GetXml()
    {
      ExecuteConsoleApp(@"E:\temp\temp.txt");
    }

    private static void ExecuteConsoleApp(string filepath)
    {
      string dir = @"E:\temp\";

      ProcessStartInfo startInfo = new ProcessStartInfo();
      startInfo.FileName = dir + @"App.exe";
      startInfo.Arguments = "EN /R /U /F\"" + filepath + "\"";

      Debug.WriteLine(startInfo.FileName + " " + startInfo.Arguments);

      using (Process exeProcess = Process.Start(startInfo))
      {
         exeProcess.WaitForExit(5000); // Wait a while
         exeProcess.Kill(); // Then kill 
      }
    }
  }
}

更新:两者运行的唯一区别是 App.exe 在第一个代码中运行 SessionID=1,而第二个代码在 SessionId=0 下运行。

4

1 回答 1

1

Web 服务不是这样工作的。“Web 服务”和“Windows 服务”的名称确实非常相似,但它们是截然不同的应用程序类型。

Web 服务没有 UI。它是一个位于 Web 服务器上并公开方法的应用程序。您可以使用各种通信协议(例如 SOAP)通过 http 调用这些方法,它们将返回数据。

如果您愿意,本文将解释如何使用 Web 服务。Web 服务简介

于 2012-04-06T13:43:55.173 回答