"The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine"...DNN

64-bit, asp.net, dotnetnuke, oledb

Solution

You could change your app pool that you're running that site under to run as a 32 bit application. In the IIS7 manager, its under "Advanced Settings" of your app pool, and then set "Enable 32-bit Applications" to true.

You could also do this with AppCmd from a console with the following:

appcmd apppool set /apppool.name:MyNukeSite /enable32BitAppOnWin64:true

In IIS6 - you could try something like this (2 lines here, run aspnet_regiis when finished changing the metabase value)...

cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1
aspnet_regiis.exe -i

See the following for more info:

- http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5d306956-b2a2-4708-9bb9-72a395d474bb.mspx?mfr=true

- http://blogs.msdn.com/irfanahm/archive/2008/12/15/how-to-use-a-32-bit-dll-in-asp-net-page-which-is-hosted-on-64-bit-iis.aspx

- http://support.microsoft.com/kb/895976

Problem

I'm trying to get a new DotNetNuke site up and running on our 64-bit server, and I'm encountering the following error message: "The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine" I know from experience that you run into this when you target a 64-bit assembly on a 64-bit machine (there is no 64 bit OLE-DB provider currently). In that case, I simply target the x86 in Visual Studio and everything works fine. But in this case, the site uses dynamic compilation, so there's no simple place to specify that I need to target x86. Any thoughts? TIA.

Original source