xmlタグを追加してテキストを処理するコマンドライン引数を使用してGUIプログラムを実行したいとします。したがって、テキストはファイルシステム上になければならず、xmlは同じディレクトリに作成されます。私はコンソールアプリケーションとWebサービスの両方を試しました。 WSが機能しないのはなぜですか?どうすればデバッグできますか?プロセスの開始:コンソールアプリケーションとWebサービスの違い
このコードは、私が望むように動作します
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");
}
}
}
この1つはないのはなぜ?私は、プロセスは、セッション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
}
}
}
}
UPDATE:両方の実行の唯一の違いは、ということではありませんAPP.EXE SessionId = 0を指定して2番目のコードを実行すると、SessionID = 1の最初のコードで実行されます。
ホスティングアプリケーションプールはどのようなアカウントで実行されていますか? –
@ JohnRasch Webサービスの場合は "DefaultAppPool"です。そして、私のウィンドウはスタンドアロンのアプリケーションのアカウントです。 – enguerran
なぜ '.CreateNoWindow = false;'を使っているのですか? - 試してみてください。 – NSGaga