Problema riscontrato (e risolto) utilizzando
Windows 7 pro 64 bit
IIS 7.5
Visualstudio 2010 pro 10.0
Sito internet in Asp.net C# con database Access
Il mio sito si basa, ahimè, su un database access.
Qualche tempo fa ho cambiato il computer e, dopo un'attenta ricerca di mercato, ho comprato un Asus con windows 7 pro – 64 bit.
Ero molto soddisfatto quando l'ho portato a casa.
Ma quando ci ho messo su la copia locale del mio sito e ho provato ad eseguirlo mi è venuta fuori la temuta pagina gialla con un errore che diceva " Il provider 'Microsoft.Jet.OLEDB.4.0' non è registrato nel computer locale".
Ho perso un bel po' di tempo per capire come e cosa dovessi fare. Poi, miracolosamente, ha funzionato e tutto ha continuato ad andare bene fino a pochi giorni fa', quando ho formattato il computer e, dopo aver reinstallato tutto, ho avuto esattamente lo stesso problema.
Ho visto comparire l'errore giallo e ho pensato "ma porc… non mi ricordo assolutamente come l'avevo risolto". Anche questa volta ci ho perso un po' di tempo ma, visto che non ho speranza di ricordarmi il procedimento se dovessi riformattare, ho deciso di scrivere questo post in modo che possa essere utile a chi ha avuto lo stesso problema ed anche a me quando dovrò riaffrontarlo.
Si, perché credo proprio che non ci sia speranza che il signor Microsoft intanto lo risolva lui.
Ah già, ma qual è il problema?
Semplicemente (riporto da sito Microsoft) "non esiste una versione a 64 bit del provider di database. OleDb", per cui Asp.net non riesce ad interfacciarsi con Access.
Cercando in giro, quello che ho trovato è che bisogna forzare l'applicazione ad essere compilata a 32 bit da visual studio.
Io questa cosa non sono riuscito a fargliela capire (a visual studio).
Quello che, nel mio caso, ha funzionato, è stato settare IIS.
I passaggi da fare sono questi:
- aprire IIS e cliccare sulla voce del proprio pc (la freccia a sin)
- cliccare su "visualizza pool di applicazioni" (la freccia a dx)
- cliccare su Classic .NET AppPool e poi su Impostazioni avanzate
E poi su Attiva applicazioni a 32 bit
Ripetere lo stesso procedimento con il DefaultAppPool.
Facendo così sono riuscito a risolvere il problema e tutto ha ricominciato a funzionare come prima.
Se avete altre idee o soluzioni o anche domande scrivetemi da qui (nel caso, anche per dirmi che questo post è stato utile).