0

いくつかの xml タグを追加してテキストを処理するコマンドライン引数を使用して GUI プログラムを実行したいと考えています。したがって、テキストはファイルシステム上にある必要があり、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");
    }
  }
}

なぜこれはしないのですか?つまり、プロセスはセッション 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 の最初のコードで実行され、2 番目のコードが SessionId=0 で実行されることです。

4

1 に答える 1

1

それは Web サービスの仕組みではありません。「Web サービス」と「Windows サービス」という名前は非常によく似ていますが、アプリケーションの種類は大きく異なります。

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

この記事では、Web サービスを操作する方法について説明します。Web サービスの紹介

于 2012-04-06T13:43:55.173 に答える