дождитесь выполнения кода, прежде чем запускать редирект - PullRequest
0 голосов
/ 29 сентября 2010

У меня есть перенаправление страницы, которое запускается после записи строки в документ MSword с использованием WebClient и StringBuilder.

        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();

Ответы [ 2 ]

0 голосов
/ 29 сентября 2010

Поправьте меня, если я ошибаюсь, но если бы он поместил это в попытку / поймать /, наконец, обновление не будет выполнено, пока не будет написан правильный ответ?

 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 голосов
/ 29 сентября 2010

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

...