我有一个Windows服务,我是从一个离开的开发人员那里继承的。 Windows服务在QA环境中运行良好。当我安装服务并在本地运行它时,我收到此错误:
无法启动服务。 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.
答案 0 :(得分:1)
检查安装程序代码。通常你会发现计数器是在一个安装中创建的(它将在客户端站点上的admin privledges下运行),然后代码就像它们存在一样使用它们 - 但不会尝试创建它们,因为它们不希望有权限。
如果您只是获取源代码然后尝试运行它,则计数器/计数器类不存在,因此您会立即崩溃。 (或者检查计数器是否存在/如果他们编写代码以在服务中创建它,则您有本地管理员。)
在提到它之前看过它。
答案 1 :(得分:0)
附加调试器并中断InvalidOperationException(第一次机会,即抛出时)?