2010-02-11 2 views
1

J'index.html que publier des données sur Page1.asp Page1.asp transformer les données et l'envoyer à Page2.asp avec cette fonction « PostTo »XML d'affichage de Classic asp et écrire à la fonction Fichier

Page2 .asp est supposé: -write les données à data.txt avec « WriteToFile » problème: la fonction WriteToFile ne pas écrire quelque chose dans le fichier lors de l'appel de page2 Mais le travail lorsque l'appel de la page 1

toute suggestion?

Function PostTo(Data, URL) 
    Dim objXMLHTTP, xml 
    ''# On Error Resume Next 
     Set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0") 
     objXMLHTTP.Open "POST", URL, False 
     objXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
     objXMLHTTP.Send Data 
     If objXMLHTTP.readyState <> 4 then 
     objXMLHTTP.waitForResponse 10 
     End If 
     If Err.Number = 0 AND objXMLHTTP.Status = 200 then 
     PostTo = objXMLHTTP.responseText  
     else 
     PostTo = "Failed" 
     End If 
     '' # if xhttp.Status<>200 then err.Raise vbObjectError, , "Server returned http code " & xhttp.Status  
      Set objXMLHTTP = Nothing 
    End Function 

Répondre

0

Terminé. vous devez POST à ​​un ASP dans un dossier virtuel différent. Si l'ASP est dans le même dossier virtuel, l'ASP cesse de répondre (se bloque). Après avoir fermé le navigateur, ASP et les autres ASP continuent à se bloquer parce que la demande reste en file d'attente même si vous fermez le navigateur. Vous devez redémarrer IIS ou redémarrer l'ordinateur.

1

Le problème que vous avez rencontré n'est pas seulement résolu par un dossier virtuel différent, mais il doit être une application différente. Si vous aviez désactivé le débogage ASP, vous constaterez que cela aurait fonctionné.

Le problème est que tandis que page1 fait la demande à page2 le thread sur lequel il s'exécute est bloqué en attente de la réponse. La requête à page2 sera ensuite exécutée sur un autre thread.

Lorsque le débogage ASP est activé, ASP n'utilise qu'un seul thread pour répondre aux demandes. Ainsi, lorsque la requête de page2 arrive, elle ne trouve pas de thread à exécuter car le seul thread disponible exécute toujours la page1 afin que la requête à page2 soit mise en file d'attente. Cependant, page1 ne se terminera jamais tant que page2 ne sera pas terminée et que page2 ne pourra pas être terminée tant que page1 ne sera pas terminée, de sorte qu'elle pourra utiliser le seul thread disponible. Votre application a été suspendue et vous devez réinitialiser pour l'effacer.

En utilisation normale, vous obtenez 25 threads par processeur, ce qui rend la situation beaucoup plus difficile. Toutefois, si vous avez un site occupé avec beaucoup de cette "auto-demande" allant sur son possible d'arriver à cette situation d'impasse (ou au moins endommager sérieusement la performance).

+0

bonne chose. Merci – FasoService