2010-09-29 3 views
0

У меня есть перенаправление страницы, которое выполняется после того, как строка записана в документ MS Word с использованием WebClient и StringBuilder.Дождитесь завершения кода перед запуском redirect

 HttpContext.Current.Response.Write(strHTMLContent); 
     this.Page.Response.Redirect("http://www.google.com"); 
     HttpContext.Current.Response.End(); 

Однако строка никогда не будет написана (или не получает шанс), так как редирект происходит мгновенно.

Как я могу сделать мой переадресацию только до тех пор, пока не произойдет запись строки?

Спасибо, ребята

Это код, который используется для создания 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

Что именно вы пытаетесь сделать здесь? Показать strHTMLContent в браузере пользователя? Или перенаправить их на http://www.google.com/? – Carson63000

+0

Попытка показать strHTMLContent в документе MSWord (который работает), а затем перенаправить браузер на google.com – leonnz

+0

см. Код выше для вывода на MSWord – leonnz

ответ

0

Перенаправление заканчивает всю обработку и инструктирует браузер, где указать на следующий. То, что вы можете сделать, это записать данные, которые вы хотите видеть у своего пользователя, но включите meta refresh или аналогичный механизм, описанный в статье Википедии.

+0

Я пробовал это: HttpContext.Current.Response.Write (strHTMLContent); HtmlMeta meta = новый HtmlMeta(); meta.HttpEquiv = "refresh"; meta.Content = "0; url = http: //www.google.com/" this.Header.Controls.Add (meta); но по какой-то причине он не добавляет метаинформацию в мой html, хотя я не вижу ошибок в коде. – leonnz

+0

@leonnz Нет ли способа включить это как часть вашего strHTMLContent? –

+0

Данные в strHTMLContent записываются в документ MSWord, поэтому мета-перенаправление там не очень хорошо, так как мне нужно, чтобы окно моего браузера перенаправлялось. Программное добавление метатега не сработало ... но оно должно, не выяснилось, почему пока. – leonnz

0

Исправьте меня, если я ошибаюсь, но если он должен был положить это в try/catch /, то обновление не будет выполняться до тех пор, пока ответ не будет написан правильно?

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

Я получил тот же результат с этим, перенаправление запускается мгновенно. Все это инкапсулировано в событие onclick, если это важно, я не уверен. – leonnz

Смежные вопросы