An unexpected error occurred in Report Processing

I am looking for this solution for a long time, but today I could fix this issue.

We are using a new Report Server 2008 R2 with a few users. One user is member of the role "Content Manager", but could not deploy a report. When I tried it, it was no problem. The user tried it a second time and could deploy the report. Everything seems fine. The problem is fixed. Really? No! A few hours later the user could neither deploy the same report again, nor any other report.

Each time there was a dump created and I could see the following lines in the Report Server error log:

library!ReportServer_0-38!42b4!03/08/2012-13:28:29:: Call to CreateReportAction(TEST, /MyFolder, True).
processing!ReportServer_0-38!42b4!03/08/2012-13:28:29:: e ERROR: 
Throwing Microsoft.ReportingServices.ReportProcessing.
ReportProcessingException: , Microsoft.ReportingServices.
ReportProcessingException: An unexpected error occurred in Report 
Processing. ---> System.UnauthorizedAccessException: Access is denied. 
(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
   at System.ConfigServer.RunParser(IConfigHandler factory, 
String fileName)
   at System.ConfigTreeParser.Parse(String fileName, String configPath, 
Boolean skipSecurityStuff)
   at System.Security.Cryptography.CryptoConfig.InitializeConfigInfo()
   at System.Security.Cryptography.CryptoConfig.CreateFromName(String name, 
Object[] args)
   at System.Security.Cryptography.SHA1.Create()
   at Microsoft.ReportingServices.ReportPublishing.ReportPublishing.
   at ...   
--- End of inner exception stack trace ---;

I figured out, that it was a problem with the machine.config of the .NET framework. Some permissions were missing. I will not blame wsus for this, but I can't help myself...

If you ever stumble over (E_ACCESSDENIED)) at System.ConfigServer.RunParser remember the machine.config!

I've changed the permissions for machine.config for the group <server>\Users to Read&Execute and Read. This fixed the error and the user can start to deploy all his reports!

But why was the user succesfull, after my deployment? I am a member of the local admins and this group had all the permissions on machine.config! It seems that .NET framework was caching the machine.config and after some time of inactivity it was released. The next call to machine.config was going to the file system and the missing permissions hit the user.