1

我有一个从已故开发人员那里继承的 Windows 服务。Windows 服务在 QA 环境中运行良好。当我安装该服务并在本地运行它时,我收到此错误:

无法启动服务。System.InvalidOperationException:请求的性能计数器不是自定义计数器,它必须初始化为只读。

这是代码:

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.
4

2 回答 2

1

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

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

之前看过所以提过。

于 2009-12-08T16:35:54.630 回答
0

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

于 2009-12-20T21:10:15.783 回答