2010-09-29 6 views
0

J'ai une redirection de page qui s'exécute après l'écriture d'une chaîne dans un document MSword à l'aide de WebClient et de StringBuilder. Cependant, la chaîne n'est jamais écrite (ou elle n'a pas l'occasion de le faire) puisque la redirection se produit instantanément.attente jusqu'à l'exécution du code avant l'exécution de la redirection

Comment est-ce que je peux faire ma redirection seulement jusqu'à ce que la chaîne Write ait eu lieu?

Merci les gars

C'est le code utilisé pour générer le MSWord:

 HttpContext.Current.Response.Charset = ""; 
     HttpContext.Current.Response.ContentType = "application/msword"; 
     string strFileName = "GenerateDocument" + ".doc"; 
     HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + strFileName); 
     StringBuilder strHTMLContent = new StringBuilder(); 
+0

Qu'est-ce que vous essayez exactement de faire ici? Afficher strHTMLContent dans le navigateur de l'utilisateur? Ou redirigez-les vers http://www.google.com/? – Carson63000

+0

Essayer d'afficher strHTMLContent dans un document MSWord (qui fonctionne), puis rediriger le navigateur vers google.com – leonnz

+0

voir le code ci-dessus pour la sortie vers MSWord – leonnz

Répondre

0

Le redirect termine tout le traitement et indique au navigateur où pointer vers suivant. Ce que vous voudrez peut-être faire est d'écrire les données que vous souhaitez que votre utilisateur voit, mais incluez un meta refresh ou un mécanisme similaire comme indiqué dans l'article Wikipedia.

+0

J'ai essayé ceci: HttpContext.Current.Response.Write (strHTMLContent); HtmlMeta meta = nouveau HtmlMeta(); meta.HttpEquiv = "refresh"; meta.Content = "0; url = http: //www.google.com/" this.Header.Controls.Add (meta); mais pour une raison quelconque, il n'ajoute pas les informations méta à mon HTML, bien que je ne puisse voir aucune erreur dans le code. – leonnz

+0

@leonnz N'est-il pas possible de l'inclure dans votre strHTMLContent? –

+0

Les données contenues dans strHTMLContent sont écrites dans un document MSWord, donc la méta-redirection n'est pas très bonne car je dois rediriger la fenêtre de mon navigateur. L'ajout par programme de la méta-balise n'a pas fonctionné ... mais il aurait dû ne pas comprendre pourquoi. – leonnz

0

Corrigez-moi si je me trompe, mais s'il devait mettre ceci dans un essai/attraper/finalement l'actualisation ne s'exécuterait qu'après que la réponse ait été écrite correctement?

try 
    { 
     HttpContext.Current.Response.Write(strHTMLContent); 
     HttpContext.Current.Response.End(); 
    } 
catch(Exception ex) 
    { 
     //handle exception 
    } 
finally 
    { 
     this.Page.Response.Redirect("http://www.google.com"); 
    } 
+0

J'ai obtenu le même résultat avec ceci, la redirection fonctionne instantanément. Le tout est encapsulé dans un événement onclick si cela compte, je ne suis pas sûr. – leonnz

Questions connexes