[英]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.