Getting error "The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine"

PROBLEM DESCRIPTION:

While I was trying to connect to an Access Database from Visual Studio 2010 on my Windows 7 x64 server, I got the following error message,

Server Error in '/myCalendar' Application.


The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

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.InvalidOperationException: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

SOLUTION:

After a detailed research on the above error message, I was able to identify that the 64-bit framework dlls weren’t able to 32-bit versions of the 'Microsoft.ACE.OLEDB.12.0' provider modules.

Since I was running Visual Studio on a 64-bit machine, IIS 7 is not (by default) serving 32-bit applications. However, I noticed that the database engine operated on 32-bit. I followed these steps to fix the issue:

1. Open the IIS 7.5 manager and select the application pool corresponding to your web application.

2. Right click the application pool and select ‘Advanced settings’.

3. Select the field ‘Enable 32-bit applications’ and change it to 'true'.

4. Restart your application pool and access your application to fix the error you saw.

Happy debugging!