2010-10-13 2 views
3

Est-ce que quelqu'un sait comment configurer une action par défaut lorsqu'une requête ServerXMLHTTP expire? J'utilise setTimeouts() pour définir les options d'expiration en fonction du MSDN site.Définition d'un délai d'attente pour la requête ServerXMLHTTP

Idéalement, je voudrais recommencer la demande depuis le début ou rafraîchir la page si elle expire. J'utilise classic asp et jscript.

Voilà ma demande:

function serverXmlHttp(url) { 
    var serverXmlHttp; 
    serverXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0"); 

    // set time out options 
    serverXmlHttp.setTimeouts(15000,15000,15000,15000); 

    // does not work 
    // serverXmlHttp.ontimeout(Response.Write("page has timed out")); 

    serverXmlHttp.open("GET", url, false); 
    serverXmlHttp.send(); 

    if (serverXmlHttp.readyState == 4) { 
     return serverXmlHttp.responseText; 
    } 
} 

Répondre

3

figured it out. J'ai juste besoin d'utiliser une instruction try/catch.

function serverXmlHttp(url) { 

    try { 
     var serverXmlHttp; 
     serverXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0"); 

     // set time out options 
     serverXmlHttp.setTimeouts(15000,15000,15000,15000); 

     serverXmlHttp.open("GET", url, false); 
     serverXmlHttp.send(); 

     if (serverXmlHttp.readyState == 4) { 
      return serverXmlHttp.responseText; 
     } 
    catch(error) { 
     // whatever I want to happen if there's an error 
     Response.Write("Sorry, your request has timed out"); 
    } 

} 
+1

Si vous utilisez un ASP classique pur, vous pouvez intercepter l'erreur 'msxml6.dll'' 80072EE2' ("L'opération a expiré"). Il sera lancé par la méthode 'send'. – dakab

4

L'important est de savoir pourquoi il est hors délai ..

est l'URL à distance sur la même application que la page d'appel?

le cas échéant un coup d'oeil à INFO: Do Not Send ServerXMLHTTP or WinHTTP Requests to the Same Server que vous serez face à la famine de fil ..

+0

Non, ce n'est pas le cas. La demande est faite à une base de données sur un autre serveur. Je veux juste avoir un fail safe dans le cas où la demande expire (comme cela a été fait à l'occasion) plutôt qu'une erreur de délai d'attente générique. – Choy

Questions connexes