Reputation: 3146
I am getting repeated errors about the ReadOnly property on performance counters whenever I try to debug a .NET windows service app. This app works fine on x86 windows vista, or x86 windows 2003. It's just stopped working on my new 64bit dev machine.
I've run the relevant InstallUtil invocations on 64bit and 32bit command line VCVARS.bat, in admin mode. I get no errors setting up the category and each perf counter. But, regardless of whether I set the perf ctrs as readonly or not, I get this:
The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly.
UPDATE
I re-installed the machine with a 32bit version of Windows 7, and bizarrely I still get this error. The only thing that has changed is moving from Windows Vista Business to Windows 7 Professional. Does this ring any bells?
Upvotes: 40
Views: 48388
Reputation: 399
I was getting this misleading error on my deployment machine, I was catching the error using FirstChanceException Mechanism, The IIS was repeatedly stopping the related Application Pool after occurring this error and I was getting the 'Service Unavailable' error when calling the site,
I tried many days to stop the counters or find/add the related counters but it did not work.
So I installed the VS on the server and debugged and noticed that I have been calling a non awaitable Linq query inside a async action which is not correctly conducted and accordingly there is a bug in application threading , and when there is many site visitors this bug shows up and IIS throws this exception and stops working.
after checking ShuggyCoUk answer and other answers if you are still getting the error, My advice is to consider checking related async functions.
Upvotes: 0
Reputation: 2029
I've spent good few hours on that issue, following all the instructions found on the web, so I've decided to share my solution, maybe it will save some time for the others. Finally I got a hint under one of the link in comments:
You’ll need to run Visual Studio as an administrator
My app is using MassTrasit with RabbitMQ, and it was failing on sending messages to the queue. Apparently it adds some perf counters under the hood and it was failing without Admin privileges with that very descriptive error. Funny thing you will need to run it as admin only first time (that's what deceived me).
Upvotes: 2
Reputation: 17263
I ran into a variant of this issue, while I could see the .net performance counter tab in reflector it actually had no counters in it.
lodctr /R
cd C:\Windows\Inf\.NETFramework
lodctr corperfmonsymbols.ini
Upvotes: 9
Reputation: 36438
This is due to the performance counter (or category) not existing, but with a horrible error message.
Take a look in perfmon for the counter, it should be missing on the relevant machines.
I find this happens to the .Net perf counters sometimes (no idea why) but using lodctr1 gets them back. If you indicate which perf counter you are trying to get at we might be able to give you more help.
Upvotes: 56