与我托管的Windows服务安装程序一起,是否可以在发生错误时设置恢复选项?

时间:2013-08-23 13:35:34

标签: c# wcf windows-services servicehost hosted

我正在跟随http://msdn.microsoft.com/en-us/library/bb332338.aspx一起托管我的服务作为Windows服务。它安装得很好,但我想在“第一次失败”,“第二次失败”或“后续失败”中将恢复选项设置为“重启服务”。如何实现这一目标?

2 个答案:

答案 0 :(得分:4)

这样做的选项并不简单,它们需要调用一些方法来实现它。您可以使用以下扩展名http://www.codeproject.com/Articles/6164/A-ServiceInstaller-Extension-That-Enables-Recovery之类的内容,或使用命令滚动自己的扩展名。

[DllImport("advapi32.dll", EntryPoint="ChangeServiceConfig2")]
public static extern bool 
ChangeServiceFailureActions( IntPtr hService, int dwInfoLevel,
[ MarshalAs( UnmanagedType.Struct ) ] ref SERVICE_FAILURE_ACTIONS lpInfo );


[DllImport("advapi32.dll", EntryPoint="ChangeServiceConfig2")]
public static extern bool 
ChangeServiceDescription( IntPtr hService, int dwInfoLevel, 
[ MarshalAs( UnmanagedType.Struct ) ] ref SERVICE_DESCRIPTION lpInfo );

有关详细信息,请参阅http://netcode.ru/dotnet/?lang=&katID=30&skatID=277&artID=7660

答案 1 :(得分:2)

您可以使用命令行中的sc.exe设置恢复选项。这个答案有一个很好的例子,说明如何使用C#:

Install Windows Service with Recovery action to Restart