Подтвердить что ты не робот

Ошибка запуска службы Windows: невозможно запустить службу из командной строки или отладчика

Привет, я получаю эту ошибку

Не удается запустить службу из командной строки или отладчика. Служба winwows сначала должна быть установлена ​​(с использованием installutil.exe), а затем запущена с ServerExplorer, средним администратором Windows Services или командой 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;
}
4b9b3361

Ответ 1

Наблюдайте это видео, у меня был тот же вопрос. Он также показывает вам, как отлаживать службу.

Вот его инструкции, используя базовый шаблон службы Windows С# в Visual Studio 2010/2012.

Вы добавляете это в файл Service1.cs:

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

Вы меняете свой Main() для вызова своего сервиса таким образом, если находитесь в конфигурации Active Solution DEBUG.

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().

Ответ 2

Чтобы установить службу вручную

Чтобы установить или удалить Windows-сервис вручную (который был создан с использованием .NET Framework), используйте утилиту InstallUtil.exe. Этот инструмент можно найти по следующему пути (используйте соответствующий номер версии каркаса).

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

Для установки

installutil yourproject.exe

Чтобы удалить

installutil /u yourproject.exe

Смотрите: Как установить и удалить службы (msdn)

Установить сервис программно

Чтобы программно установить сервис с помощью С#, см. следующий класс ServiceInstaller (c-sharpcorner).

Ответ 3

Ваш код не имеет ничего общего с установкой службы, это не проблема.

Чтобы проверить сервис, вы должны установить его, как указано.

Дополнительные сведения об установке службы: Установка и удаление служб

Ответ 4

Я предлагаю создать проект установки по причинам, в то время как развертывание это, кажется, лучшее удобство, без головных болей при копировании файлов вручную. Следуйте учебному пособию по созданию установки Windows, и вы знаете, как его создать. И этот экземпляр для vb.net, но он одинаковый для любого типа.

Ответ 5

Чтобы установить Open CMD и введите {YourServiceName} -i после его установленного типа в NET START {YourserviceName}, чтобы начать службу

для удаления

Чтобы удалить Open CMD и введите NET STOP {YourserviceName} один раз остановленный тип в {YourServiceName} -u, и его следует удалить

Ответ 6

Перейти к App.config

Find

<setting name="RunAsWindowsService" serializeAs="String">
    <value>True</value>
  </setting>

Установите значение False