51 messaggi dal 08 febbraio 2002
Buongiorno, ripropongo un problema che sto avendo su un server di test.

Sto preparando una funzionalità per eliminare un problema di url injection su una vecchia applicazione fatta in classic ASP.

Alla funzione viene passato una parte di url (es. CartellaA/CartellaB/file.asp) lo completa con le informazioni delle server variables e fa una richiesta http verso questo indirizzo.

Il problema è che nel mio ambiente di sviluppo non mi da problemi di alcuna sorta, su Test invece da l'errore

Description :The data necessary to complete this operation is not yet available
Error Source : msxml3.dll
Error number -2147483638

Questa è la mia funzione

Function FindPage(extendedUrl, redirect)

On Error Resume Next

dim straddr, url, protocol, status, virtualDir, rState

If extendedUrl = "" Then
FindPage = extendedUrl
Else

If Request.ServerVariables("HTTP_HOST") <> "" Then
straddr = Replace(Request.ServerVariables("HTTP_HOST"), "/", "")
Else
straddr = Replace(Request.ServerVariables("SERVER_NAME"), "/", "")
End If

virtualDir = Request.ServerVariables("PATH_INFO")
i = InStr(2, virtualDir, "/")

If i > 0 Then
virtualDir = Left(virtualDir, i - 1)
virtualDir = Replace(virtualDir, "/", "") & "/"
Else
virtualDir = ""
End If

protocol = LCase(Split(Request.ServerVariables("SERVER_PROTOCOL"), "/")(0))
url = protocol & "://" & straddr & "/" & virtualDir & extendedUrl

set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.3.0")
xmlhttp.open "GET", url, false

xmlhttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
xmlhttp.setRequestHeader "Content-length", 0

xmlhttp.send

status = CInt(xmlhttp.Status)
rState = xmlhttp.readyState

If xmlhttp.readyState = 4 Then
If status >= 400 and status < 500 Then
FindPage = redirect
Else
FindPage = extendedUrl
End If
End If

set xmlhttp = nothing

End if

If err.Number <> 0 Then

Response.Write "<br><b>Errore in FindPage!</b><br>"
Response.Write "Description : " & err.Description & "<br>"
Response.Write "Error source : " & err.Source & "<br>"
Response.Write "Error number " & err.Number & "<br>"
Response.Write "Url : " & url & "<br>"
Response.Write "HTTP_HOST :" & Request.ServerVariables("HTTP_HOST") & "<br>"
Response.Write "SERVER_NAME :" & Request.ServerVariables("SERVER_NAME") & "<br>"
Response.Write "readyState : " & rState & "<br>"
Response.Write "Response Text : " & xmlhttp.responseText & "<br>"
Response.End

End If

End Function


L'errore credo di aver capito che si propone quando cerco di andare a leggere le proprietà dell'oggetto xmlhttp. Cercando tra il mare di forum in rete sembra che chi ha avuto questo problema aveva messo "true" all' argomento "async" della funzione Open di xmlhttp. Modificandolo in false sembra che vada sempre a posto.
Questo avrebbe senso, se il server è impegnato al momento non da subito la risposta e non valorizza xmlhttp. Ma nella mia funzione "async" è false, e ottengo lo stesso errore. Com'è possibile ? Forse ci sono dei settaggi particolari su IIS (io ho il 7.5, su test c'è il 6)? Oppure sto usando un oggetto COM (qui ""MSXML2.ServerXMLHTTP.3.0") errato ?
Non so esattamente dove sbattere la testa

Grazie in anticipo.
51 messaggi dal 08 febbraio 2002
Aggiungo una variabile al problema : sembra che il server di test su cui non funziona questa funzionalità sia in load balancing, 2 indirizzi fisici e uno virtuale. A mio avviso questo non dovrebbe creare problemi, se tutto funziona correttamente, forse allora è un problema di tipo sistemistico, ma fino ad ora non vedo una luce alla fine del tunnel ...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.