【发布时间】:2015-05-25 09:15:09
【问题描述】:
我需要将参数传递给windows服务的Main(string[] args),我可以通过使用服务的属性将参数传递给void OnStart(string[] args)
How to pass parameters to Windows Service?
示例代码:
static void Main(string[] args)////How to pass args to this function
{
//// some code
}
protected override void OnStart(string[] args)////by using above link i can pass parameters to this function
{
////some code
}
注意:我使用项目属性将参数传递给 main(),但它无法实时提供帮助。
这是正确的做法吗,因为我找不到任何相关信息?
编辑 1:
我参考了这个How to pass parameters in windows service from Installer to Main function in Program.cs?,但我没有得到太多信息,为什么我们不能通过?
编辑 2:
我的目标是将 Raygun 密钥传递给 Main(String[] args) 然后将错误记录到 Raygun 网站,因此它会根据密钥将错误记录到特定版本。所以我需要将 Raygun 密钥动态传递给服务,我可以通过服务属性传递密钥,然后它只会记录 onstart(...) 级别,所以如果在 main() 级别处理任何异常我不能登录。所以我需要在主方法级别或服务启动时初始化以下代码
_raygunClient = new RaygunClient("Dynamic_Key");
服务将随时手动启动以进行开发。
【问题讨论】:
-
你不能,除非改变服务的图像路径。可执行文件首先启动 (
main()),然后服务控制管理器请求服务启动 (OnStart())。为什么要使用main(),如果需要,为什么不简单地更改图像路径? -
为什么链接的副本没有回答您的问题?
-
那个答案主要集中在如何将参数传递给 onstart() 方法。唯一对我有帮助的一点,从那个答案是“在 OnStart 方法中处理服务的初始化参数,而不是在Main 方法”,那么这种情况就没有办法了?
-
@CodeCaster 目前我正在支持项目中工作,所以我不想更改现有代码,例如通过服务属性传递参数,因为它们已经从几年前传递了一些参数,如果我现在更改它将创建一些额外的工作。
标签: c# .net service windows-services