2009-12-08 189 views
0

我有一个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. 

回答

1

检查安装程序代码。通常你会发现计数器是在安装中创建的(它将在客户端站点的管理权限下运行),然后代码将它们当作存在使用 - 但不会尝试创建它们,因为它们不希望具有权限。

如果您刚刚获得源代码然后尝试运行它,则计数器/计数器类不存在,因此您立即崩溃。 (或者检查计数器是否存在/你有本地管理员,如果他们编写代码在服务中创建它的话。)

看到它之前提到它。

+0

您可能想要增加服务进程用户的权限以查看是否修复了问题。 – 2009-12-08 16:43:50

+0

我在应用程序或安装程序中找不到任何计数器。我在我的电脑上以Admin身份登录。 – 2009-12-08 21:26:51

+0

必须从代码中找到它期望的计数器,并跟踪这是由开发人员创建的自定义计数器,还是基于Windows预计会读取的自定义计数器。 (它可能可以说是一个交换应用计数器,并且您的QA框有交换,但您的开发PC没有安装交换机。) – Andrew 2009-12-08 21:29:36

0

附加调试器并断开InvalidOperationException(第一次机会,即抛出时)?

相关问题