Condividi tramite


Variabile server APPL_PHYSICAL_PATH in Windows Vista RTM

di Robert McMurray

La versione originale di IIS 7.0 fornita con Windows Vista ha restituito un valore diverso per la variabile server APPL_PHYSICAL_PATH rispetto a quella restituita dalle versioni precedenti o successive di IIS. Nelle versioni precedenti di IIS questa variabile server includeva un carattere barra rovesciata "" aggiunto al percorso, ma nella versione di rilascio originale di Windows Vista questa variabile server conteneva solo il percorso. Questo problema è stato risolto in Windows Vista Service Pack 1 (SP1) e nella versione originale di Windows Server 2008.

Ciò significa che se si è uno sviluppatore ASP classico e si usa il valore nella variabile server APPL_PHYSICAL_PATH per calcolare i percorsi nella versione di rilascio originale di Windows Vista, il codice ASP dovrà tenere conto del carattere barra rovesciata mancante prima di eseguire la migrazione dell'applicazione a un altro computer.

Ad esempio, il codice ASP seguente calcola la posizione di un database di Microsoft Access nella cartella App_Data dell'applicazione corrente:

strCN = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
        "DBQ=" & Request.ServerVariables("APPL_PHYSICAL_PATH") & _
        "App_Data\example.mdb"
Set objCN = Server.CreateObject("ADODB.Connection")
objCN.Open strCN

Se si sta testando questo codice in un computer Windows XP che usa IIS 5.1, questo codice avrebbe funzionato correttamente. Tuttavia, se il computer è stato aggiornato alla versione originale di Windows Vista, il percorso del database non sarà valido e la connessione al database avrà esito negativo. Ad esempio, se il codice ASP si trovava in una pagina nella cartella radice del sito Web predefinito, il contenuto della stringa di connessione calcolata potrebbe essere simile al seguente:

DRIVER={Microsoft Access Driver (*.mdb)};DBQ=C:\inetpub\wwwrootApp_Data\example.mdb

Se ASP è configurato per l'invio di errori al browser, verrà visualizzato l'errore seguente:

Microsoft OLE DB Provider for ODBC Drivers error '80004005' 

[Microsoft][ODBC Microsoft Access Driver] Disk or network error. 

/example.asp, line 100

Per risolvere questo problema per Windows Vista, è possibile installare Windows Vista SP1 oppure è possibile controllare manualmente il codice ASP per il carattere barra rovesciata e aggiungere la barra rovesciata, se necessario. Ad esempio:

strAP = Request.ServerVariables("APPL_PHYSICAL_PATH")
If Right(strAP,1)<>"\" Then strAP = strAP & "\"
strCN = "DRIVER={Microsoft Access Driver (*.mdb)};" & _
        "DBQ=" & strAP & "App_Data\example.mdb"
Set objCN = Server.CreateObject("ADODB.Connection")
objCN.Open strCN

Altre informazioni

Per altre informazioni sulle variabili del server IIS, vedere la pagina seguente nel sito Web Microsoft MSDN:

Variabili del server IIS
https://msdn.microsoft.com/library/ms524602.aspx