40

每当我尝试调试 .NET Windows 服务应用程序时,我都会收到有关性能计数器上 ReadOnly 属性的重复错误。这个应用程序在 x86 windows vista 或 x86 windows 2003 上运行良好。它刚刚停止在我的新 64 位开发机器上运行。

我已经在管理员模式下在 64 位和 32 位命令行 VCVARS.bat 上运行了相关的 InstallUtil 调用。设置类别和每个性能计数器时我都没有错误。但是,无论我是否将 perf ctrs 设置为只读,我都会得到:

请求的性能计数器不是自定义计数器,它必须初始化为只读。

更新

我用 32 位版本的 Windows 7 重新安装了机器,奇怪的是我仍然得到这个错误。唯一改变的是从 Windows Vista Business 迁移到 Windows 7 Professional。这会敲响警钟吗?

4

4 回答 4

56

这是由于性能计数器(或类别)不存在,但带有可怕的错误消息。

查看 perfmon 中的计数器,相关机器上应该没有它。

我发现 .Net 性能计数器有时会发生这种情况(不知道为什么),但使用 lodctr 1会使它们恢复原状。如果您指出您尝试使用哪个性能计数器,我们可能会为您提供更多帮助。

  1. 请注意,内衬的示例适用于 .Net 1.1,请相应地针对不同的框架进行调整。
于 2010-01-17T17:52:26.520 回答
9

我遇到了这个问题的一个变种,虽然我可以在反射器中看到 .net 性能计数器选项卡,但它实际上没有计数器。

我不得不重新添加它们

lodctr /R
cd C:\Windows\Inf\.NETFramework
lodctr corperfmonsymbols.ini
于 2013-01-25T01:26:34.777 回答
2

我在这个问题上花了好几个小时,按照网上找到的所有说明,所以我决定分享我的解决方案,也许它会为其他人节省一些时间。最后,我在评论中的一个链接下得到了提示:

您需要以管理员身份运行 Visual Studio

我的应用程序正在将 MassTrasit 与 RabbitMQ 一起使用,并且无法将消息发送到队列。显然,它在后台添加了一些性能计数器,并且在没有管理员权限的情况下失败,并出现了非常描述性的错误。有趣的是,您只需要第一次以管理员身份运行它(这就是欺骗我的原因)。

于 2018-05-09T14:35:51.127 回答
0

我在部署机器上遇到了这个误导性错误,我使用 FirstChanceException 机制捕获了错误,发生此错误后 IIS 反复停止相关的应用程序池,并且在调用站点时遇到“服务不可用”错误,

我尝试了很多天来停止计数器或查找/添加相关计数器,但它不起作用。

因此,我在服务器上安装了 VS 并进行了调试,发现我一直在异步操作中调用不可等待的 Linq 查询,该操作未正确执行,因此应用程序线程中存在错误,并且当有很多站点访问者时,此错误出现并且 IIS 抛出此异常并停止工作。

检查 ShuggyCoUk 答案和其他答案后,如果您仍然收到错误,我的建议是考虑检查相关的异步函数。

于 2019-01-05T05:58:27.347 回答