0

を使用してWindowsサービスをインストールしましたinstallutil service1.exe

をクリックするとDebug、エラー メッセージが表示されますWindows Service Start Failure: Cannot start service from the command line or a debugger...。したがって、[Debug] メニューから [Attach to Process] -> [Service1] を試しました。しかし、 をクリックするAttach to Processと、自動的に に入りDebug mode and does not respond to any of my break pointsます。

ここで欠けているステップは何ですか?

4

1 に答える 1

1

次の変更により、他のコンソール アプリケーションと同様に Windows サービスをデバッグできます。

このクラスをプロジェクトに追加します。

public static class WindowsServiceHelper
{
    [DllImport("kernel32")]
    static extern bool AllocConsole();

    public static bool RunAsConsoleIfRequested<T>() where T : ServiceBase, new()
    {
        if (!Environment.CommandLine.Contains("-console"))
            return false;

        var args = Environment.GetCommandLineArgs().Where(name => name != "-console").ToArray();

        AllocConsole();

        var service = new T();
        var onstart = service.GetType().GetMethod("OnStart", BindingFlags.Instance | BindingFlags.NonPublic);
        onstart.Invoke(service, new object[] {args});

        Console.WriteLine("Your service named '" + service.GetType().FullName + "' is up and running.\r\nPress 'ENTER' to stop it.");
        Console.ReadLine();

        var onstop = service.GetType().GetMethod("OnStop", BindingFlags.Instance | BindingFlags.NonPublic);
        onstop.Invoke(service, null);
        return true;
    }
}

次に-console、Windows サービス プロジェクトのデバッグ オプションを追加します。

最後にこれをMaininに追加しProgram.csます:

 // just include this check, "Service1" is the name of your service class.
    if (WindowsServiceHelper.RunAsConsoleIfRequested<Service1>())
        return;

私のブログ投稿からWindowsサービスをデバッグするより簡単な方法

于 2013-06-26T14:34:15.740 に答える