簡體   English   中英

啟動一個進程:Console Application和WebService的區別

[英]Start a process : difference between Console Application and WebService

我想使用命令行 arguments 運行一個 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 運行。

這不是 web 服務的工作方式。 “Web Service”和“Windows Service”這兩個名稱確實非常相似,但它們是非常不同類型的應用程序。

web 服務沒有 UI。 它是一個位於 web 服務器上並公開方法的應用程序。 您可以使用各種通信協議(例如 SOAP)通過 http 調用這些方法,它們將返回數據。

如果您願意,本文將介紹如何使用 web 服務。 Web服務介紹

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM