嗨,我收到此错误
无法从命令行或调试器启动服务。首先必须安装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;
}
答案 0 :(得分:66)
观看this video,我有同样的问题。他还向您展示了如何调试服务。
以下是他在Visual Studio 2010/2012中使用基本C#Windows服务模板的说明。
您可以将其添加到Service1.cs文件中:
public void onDebug()
{
OnStart(null);
}
如果您处于DEBUG Active Solution配置中,则更改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()
的方式。
答案 1 :(得分:30)
手动安装服务
要手动安装或卸载Windows服务(使用.NET Framework创建),请使用实用程序InstallUtil.exe
。可以在以下路径中找到此工具(使用适当的框架版本号)。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe
安装
installutil yourproject.exe
要卸载
installutil /u yourproject.exe
请参阅:How to: Install and Uninstall Services (msdn)
以编程方式安装服务
要使用C#以编程方式安装服务,请参阅以下课程ServiceInstaller (c-sharpcorner)。
答案 2 :(得分:0)
答案 3 :(得分:0)
我建议创建一个安装项目,因为部署它似乎是最方便的,没有手动复制文件的麻烦。 关注Windows service setup creation tutorial,您知道如何创建它。这个实例适用于vb.net,但对于任何类型都是一样的。
答案 4 :(得分:0)
安装Open CMD并在{YourServiceName} -i
中安装NET START {YourserviceName}
后输入NET STOP {YourserviceName}
以启动服务
卸载
要卸载Open CMD并输入{YourServiceName} -u
,请在{{1}}后键入{{1}},然后将其卸载
答案 5 :(得分:-1)
转到App.config
查找
<setting name="RunAsWindowsService" serializeAs="String">
<value>True</value>
</setting>
设为假