2012-04-06 6 views
0

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の最初のコードで実行されます。

+0

ホスティングアプリケーションプールはどのようなアカウントで実行されていますか? –

+0

@ JohnRasch Webサービスの場合は "DefaultAppPool"です。そして、私のウィンドウはスタンドアロンのアプリケーションのアカウントです。 – enguerran

+0

なぜ '.CreateNoWindow = false;'を使っているのですか? - 試してみてください。 – NSGaga

答えて

1

これはウェブサービスの仕組みではありません。 "Web Service"と "Windows Service"という名前はまったく似ていますが、それらは非常に異なる種類のアプリケーションです。

WebサービスにはUIがありません。これは、Webサーバー上に配置され、メソッドを公開するアプリケーションです。これらのメソッドは、SOAPなどのさまざまな通信プロトコルを使用してhttp経由で呼び出すことができ、データを返します。

この記事では、Webサービスの使用方法について説明します。 Introduction to Web Services

+0

私はWebサービスについて話しています。そして私(私の上司)は、コマンドライン引数を取るUIアプリケーションのプロセスを開始したいと思っています...私の質問は詳細であり、Webサービスの記述方法ではありません。 – enguerran

関連する問題