web-dev-qa-db-ja.com

Windowsサービスの開始の失敗:コマンドラインまたはデバッガーからサービスを開始できません

こんにちは、私はこのエラーを受け取っています

コマンドラインまたはデバッガからサービスを開始できません。 winwowsサービスを最初にインストールし(installutil.exeを使用)、次にServerExplorer、Windowsサービス管理ツール、またはNET STARTコマンドを使用して開始する必要があります。

そして、なぜこのエラーが発生するのか理解できません。そして、ここに私のコードがあります:

{
    string Hash = "";
    string connectionstring = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
    SqlConnection myConnection = new SqlConnection(connectionstring);
    SqlCommand myCommand = new SqlCommand("GetNullHash", myConnection);
    myCommand.CommandType = CommandType.StoredProcedure;
    myConnection.Open();
    SqlDataReader rdr = myCommand.ExecuteReader();

    while (rdr.Read())
    {
        string filename = @"\\" + rdr.GetString(3);
        filename = System.IO.Path.Combine(filename, rdr.GetString(2));
        filename = System.IO.Path.Combine(filename, rdr.GetString(1));
        Hash = rdr.GetString(0);
        Hash = computeHash(filename);

    }
    myConnection.Close();
    return Hash;
}
52
paxcow

このビデオ を見て、同じ質問がありました。彼は、サービスのデバッグ方法も示します。

Visual Studio 2010/2012で基本的なC#Windowsサービステンプレートを使用した彼の手順を以下に示します。

これをService1.csファイルに追加します。

public void onDebug()
{
    OnStart(null);
}

DEBUG Active Solution Configurationにいる場合は、Main()を変更してこの方法でサービスを呼び出します。

static void Main()
{
    #if DEBUG
    //While debugging this section is used.
    Service1 myService = new Service1();
    myService.onDebug();
    System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);

    #else
    //In Release this section is used. This is the "normal" way.
    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[] 
    { 
        new Service1() 
    };
    ServiceBase.Run(ServicesToRun);
    #endif
}

これはサービスをデバッグする素晴らしい方法ですが、それを覚えておいてください。 OnStop()関数でOnStart(null)を呼び出した方法と同様に明示的に呼び出さない限り、onDebug()を呼び出しません。

71
Cesar

サービスを手動でインストールするには

.NET Frameworkを使用して作成されたWindowsサービスを手動でインストールまたはアンインストールするには、ユーティリティInstallUtil.exeを使用します。このツールは、次のパスにあります(適切なフレームワークバージョン番号を使用してください)。

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe

インストールする

installutil yourproject.exe

アンインストールする

installutil /u yourproject.exe

参照: 方法:サービスのインストールおよびアンインストール(msdn)

プログラムによるサービスのインストール

C#を使用してプログラムでサービスをインストールするには、次のクラスを参照してください ServiceInstaller(c-sharpcorner)

30
Ria

コードはサービスのインストールとは関係ありませんが、問題ではありません。

サービスをテストするには、指示に従ってインストールする必要があります。

サービスのインストールの詳細については、 サービスのインストールとアンインストール

0
ChrisBint

これを展開するのが最も便利であり、ファイルを手動でコピーすることの頭痛の種ではないように思えますが、その理由からセットアッププロジェクトを作成することをお勧めします。 Windowsサービスセットアップの作成チュートリアル を実行すると、作成方法がわかります。また、このインスタンスはvb.net用ですが、どのタイプでも同じです。

0
bhuvin

Open CMDをインストールし、{YourServiceName} -iにインストール済みのタイプを入力したら、NET START {YourserviceName}を入力して、サービスを開始します。

アンインストールする

Open CMDをアンインストールし、NET STOP {YourserviceName}を入力したら、{YourServiceName} -uを入力し、アンインストールする必要があります

0
JohnnBlade