我发现一些类似的问题,但答案似乎不能帮助我。我希望配置我的服务以自动启动并带有一个参数。
我的服务OnStart方法如下:
如果我在“启动参数:”字段中键入一个整数,则服务会正常启动。
如何让Windows自动使用一个参数(8081)启动我的服务?
编辑:
我进行了更多的测试。添加了args[]参数的日志记录。它是空的。我还尝试添加额外的参数,就像这张图片中一样:
我尝试用和不用双引号包围参数,但它们没有传递给服务。
我的服务OnStart方法如下:
/// <summary>
/// Starts the service
/// </summary>
/// <param name="args">args must contain the listening port number of the service</param>
protected override void OnStart(string[] args)
{
if (args != null && args.Length > 0)
{
int port = -1;
if (int.TryParse(args[0], out port) && port >= 0 && port <= 65535)
{
server.Start(port);
}
else
{
Log.Entry("Port value " + args[0] + " is not a valid port number!", Log.Level.Error);
}
}
else
{
Log.Entry("Service must be started with the port number (integer) as parameter.", Log.Level.Error);
throw new ArgumentNullException("Service must be started with the port number (integer) as parameter."); // stop the service!
}
}
所以,我按照下面截图中的建议(与其他类似问题的答案相同),在服务文件名后注册了带有整数参数(8081)的服务。
当我启动服务时,总是会收到错误消息“必须启动该服务...”。如果我在“启动参数:”字段中键入一个整数,则服务会正常启动。
如何让Windows自动使用一个参数(8081)启动我的服务?
编辑:
我进行了更多的测试。添加了args[]参数的日志记录。它是空的。我还尝试添加额外的参数,就像这张图片中一样:
我尝试用和不用双引号包围参数,但它们没有传递给服务。