Windows服务启动然后停止
问题描述:
我有一个Windows服务,我从一个离开的开发人员继承。 Windows服务在QA环境中运行得很好。当我安装该服务并在本地运行时,我收到此错误:Windows服务启动然后停止
服务无法启动。 System.InvalidOperationException:请求的性能计数器不是自定义计数器,它必须初始化为ReadOnly。
下面是代码:
ExternalDataExchangeService exchangeService = new ExternalDataExchangeService();
workflowRuntime.AddService(exchangeService);
workflowRuntime.AddService(new SqlTrackingService(AppContext.SqlConnectionImportLog));
ChallengerWorkflowService challengerWorkflowService = new ChallengerWorkflowService();
challengerWorkflowService.SendDataEvent += new EventHandler<SendDataEventArgs>(challengerWorkflowService_SendDataEvent);
workflowRuntime.AddService(challengerWorkflowService);
workflowRuntime.StartRuntime(); <---- Exception is thrown here.
答
检查安装程序代码。通常你会发现计数器是在安装中创建的(它将在客户端站点的管理权限下运行),然后代码将它们当作存在使用 - 但不会尝试创建它们,因为它们不希望具有权限。
如果您刚刚获得源代码然后尝试运行它,则计数器/计数器类不存在,因此您立即崩溃。 (或者检查计数器是否存在/你有本地管理员,如果他们编写代码在服务中创建它的话。)
看到它之前提到它。
答
附加调试器并断开InvalidOperationException(第一次机会,即抛出时)?
您可能想要增加服务进程用户的权限以查看是否修复了问题。 – 2009-12-08 16:43:50
我在应用程序或安装程序中找不到任何计数器。我在我的电脑上以Admin身份登录。 – 2009-12-08 21:26:51
必须从代码中找到它期望的计数器,并跟踪这是由开发人员创建的自定义计数器,还是基于Windows预计会读取的自定义计数器。 (它可能可以说是一个交换应用计数器,并且您的QA框有交换,但您的开发PC没有安装交换机。) – Andrew 2009-12-08 21:29:36