Il blog di Sandro Rizzetto

Oracle Client, Visual Studio 2008, IIS 7.5, Windows 7 x64: una bella lotta

 

Dopo che ieri avevo trovato il modo di imbrogliare l’installer del client Oracle 11gR1 a 64bit (che ufficialmente non supporta Windows 7), oggi mi sono dovuto scontrare con un problema più rognoso: il client si era installato, riuscivo a fare una connessione al server Oracle, ma il mio progetto ASPX (con il suo DAL e un mio OracleHelper) dentro VS2008 non funzionavano.

Ricompilando infatti il DAL (Data Access Layer) con la Oracle.DataAccess.dll a 64 bit e facendo girare il sito sull’IIS 7.5 locale (che gira a 64bit) tutto funzionava, ma se facevo ricompilare il sito aspx mi beccavo una bella:
Could not load file or assembly 'Oracle.DataAccess, Version=2.111.6.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. An attempt was made to load a program with an incorrect format.

In pratica la dll a 64bit a VS2008 (che ricordo è solo a 32bit) non andava giù…Ricompilando il DAL con una vecchia DLL (una 10.2) a 32 bit, il progetto web si ricompilava ma l’esecuzione nel browser dava un
The provider is not compatible with the version of Oracle client

Per farla breve ed evitarvi tutti i passaggi intermedi infruttosi (smanettare nella GAC, commentare l’assembly nel machine.config, sperare che il catamarano di Oracle si incagli sugli scogli, ecc) ecco come ho risolto:

  • Disinstallare tutto e partire puliti :-)
  • Installare il client 11gR1 a 32 bit (win32_11gR1_client, sempre col trucco del file refhost.xml); provando una connessione con un fle .udl vi dirà che non trova il provider… fa niente
  • Installare il cliente 11gR1 a 64bit (win64_11gR1_client); ora l’udl si connette
  • Ricompilare il vostro Dal o Helper con la Oracle.DataAccess a 32 bit (io ho usato la 1.111.6.0)
  • Ricompilare il vostro progetto web con queste dll nella Bin; dovrebbe ricompilare bene e il sito girare nel webserver di VS (Cassini)
  • Se volete che giri anche nell’IIS 7.5 (perchè magari volete testare bene authorization e authentication) allora dovete andare nelle Advanced Settings dell’Application Pool associato al vostro website e dire Enable 32-bit Application = True

image

Magari per qualcuno era logico, ma forse a qualcun altro risparmia qualche ora e qualche santo…

Aggiungi Commento

Copyright © 1997-2017 Sandro Rizzetto | All Rights Reserved | Riproduzione delle fotografie vietata | Powered by me