Ошибка запуска службы 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;
}
Ответы
Ответ 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