Siamo nel 2007, vero. E' uscito Windows Vista, vero. Siamo alla versione 2.0 del frame work e tra poco uscirà pure la 3.0, vero. Ma come al solito il tempo tiranno non ti dà la possibilità di cambiare tutte le pagine scritte in passato, anche perché come al solito sono attività che non ti ripaga nessuno, a parte un codice maggiormente mantenibile e delle performance in più.

Detto questo, i problemi di fondo che ci furono anche con il passaggio ad IIS 5.1 o 6.0 – parlo di applicazioni ASP che utilizzano il vecchio e spartano Microsoft Access - erano sempre gli stessi, mancanza di permessi. E manco a farlo apposta il "problema" c'è anche con la versione IIS 7.0

Diciamo che sotto questo punto di Vista, il nuovo OS di Microsoft ha complicato un po' le cose. Nulla che non si possa risolvere, ma c'è voluto qualche minuto di ricerca, perché fortunatamente sapevo bene cosa stavo cercando.

Problema numero 1. Il nuovo IIS 7, a prescindere dal browser (supponiamo per un attimo IE) e dalla sua dannata feature "Show friendly http error" che frullerei volentieri dalla finestra insieme al progettista che l'ha pensata, non manda più un bel messaggino di errore concreto al nostro browser.
Per ritornare ai vecchi amori bisogna:

  1. Entrare nella console IIS
  2. Sotto proprietà di ASP classico, espandere il nodo Debugging e mettere su True la vocina che dice "Send Errors to Browser".
  3. In aggiunta (modifica del 02/02/07) mettere su True anche la voce Enable client-side debugging, di default su false, altrimenti su IE7 gli errori non li vedete nemmeno se piangete in turco (e manco a dirlo con browser tipo Firefox invece si vede tutto senza problemi);

Problema numero 2. Mancanza di permessi. La prima cosa che ho fatto è stata la stessa di sempre, dare un full access all'utente IIS_IUSR. Ho notato anche l'esistenza di un nuovo utente che si chiama molto più semplicemente IUSR. Non ho capito se è un alias di IIS_IUSR o che cosa sia e soprattutto che ruolo abbia con il nuovo II7. Magari se qualcuno lo sa - o se lo riuscirò a capire io - può postare un commento.
Comunque, anche dando un full access a tuti e due, e tanto per cambiare pure all'utente Network Service le cose non cambiavano.

Perplessità e 5 caffè per capire cosa succedeva. Mi era pure balenata la malsana idea che nel nuovo vista l'Mdac non fosse installato, ma dopo una breve ricerca dentro al registry, le chiavi erano tutte li. Quale era il problema?
Sempre permessi, però, data la nuova natura – sconvolgente per certi versi – di Vista, per qualche strana ragione i file temporanei (leggasi .ldb in questo caso) non vengono più scritti dentro la stessa cartella dove risiede il database, bensì dentro la cartella temporanea C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp.

Arrivarci alla fine, grazie al Process Monitor, non è stato difficile. Ho quindi dato all'utente IUSR (non IIS_IUSR) un bel full access … Et voilà, le jeux son faites.

Nel frattempo che non riscrivo le applicazioni, posso continuare ad utilizzare il caro buon vecchio ASP 3.0

Sperando di aver fatto cosa gradita a tutti i vecchi programmatori di turno.