Friday, April 23, 2010

IIS7 CryptographicException - The system cannot find the file specified.

I found a strange error while getting my application to run on Server 2008 R2. Below is a description of a similar problem and the resolution. Its duplicated here in case the other blog disappears in the future.

From blog - MaeSitus-Sitecore

CryptographicException file not found in Sitecore
Today I came across issue with CryptographicException file not found in Sitecore. See below

Server Error in '/' Application.

THE SYSTEM CANNOT FIND THE FILE SPECIFIED.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Security.Cryptography.CryptographicException: The system cannot find the file specified.


Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


Stack Trace:

[CryptographicException: The system cannot find the file specified. ] System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) +7715070 System.Security.Cryptography.DSACryptoServiceProvider.ImportParameters(DSAParameters parameters) +258 System.Security.Cryptography.DSA.FromXmlString(String xmlString) +501 Sitecore.Nexus.Licensing.NexusLicenseApi. (String xml, Guid instance) +138 Sitecore.Nexus.Licensing.NexusLicenseApi.GetSnapShot(Guid instance) +764 Sitecore.SecurityModel.License.LicenseManager.GetSnapshotData(Guid instance) +59 Sitecore.SecurityModel.License.LicenseManager.UpdateSnapshot() +103 Sitecore.SecurityModel.License.LicenseManager.Initialize() +8 Sitecore.Nexus.Web.HttpModule.Application_Start() +76 Sitecore.Nexus.Web.HttpModule.Init(HttpApplication app) +435 System.Web.HttpApplication.InitModulesCommon() +65 System.Web.HttpApplication.InitModules() +43 System.Web.HttpApplication.InitInternal(HttpContext context, HttpApplicationState state, MethodInfo[] handlers) +729 System.Web.HttpApplicationFactory.GetNormalApplicationInstance(HttpContext context) +298 System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +107 System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +289


Version Information: Microsoft .NET Framework Version:2.0.50727.4927; ASP.NET Version:2.0.50727.4927

After consulting with my colleague, the solution is to do with IIS settings.

To resolve this,

1. go to IIS Manager
2. go to the application pool instance
3. click advanced settings
4. Under Process model, set Load User Profile to true

2 comments:

  1. This also worked for me:

    RSACryptoServiceProvider.UseMachineKeyStore = true;

    Which avoid the need to change the Application Pool setting.

    ReplyDelete
  2. Thank you! We just finally made the jump from IIS6 to IIS7.5 and this fixed the only issue we had prior to our switch.

    Made a separate AppPool with this setting and switched the one app to it.

    ReplyDelete