Response.Redirect:沒法在發送 HTTP 標頭以後進行重定向

URL:http://blog.163.com/asp_neter/blog/static/17510918820107258107558/javascript

錯誤出現語句:「Response.Redirect("diaryRun.aspx");「; 錯誤處理方式:
1:「Server.Transfer("diaryRun.aspx");「 結果:頁面可以順利跳轉可是URL地址不變。 2:public static void open(System.Web.UI.Page page, string url)         {
            StringBuilder Builder = new StringBuilder();java

 

            Builder.Append("<script language=’javascript’ >");
            Builder.AppendFormat("alert(‘{0}’);", "操做成功!");             Builder.AppendFormat("top.location.href=’{0}’ ", url);             Builder.Append("</script>");             page.ClientScript.RegisterStartupScript(page.GetType(), "message", Builder.ToString());         }服務器

結果:可以順利跳轉頁面,URL地址正確 備註: Response.Redirect():將客戶端重定向到新的 URL。
重載方法爲兩種: 1:HttpResponse.Redirect (String) 說明:將客戶端重定向到新的 URL 並指定該新 URL。 2:HttpResponse.Redirect (String, Boolean) 說明:將客戶端重定向到新的 URL。指定新的 URL 並指定當前頁的執行是否應終止。 Server.Transfer():終止當前頁的執行,併爲當前請求開始執行新頁。 重載方法爲三種:
1:HttpServerUtility.Transfer (String) 說明:對於當前請求,終止當前頁的執行,並使用指向一個新頁的指定 URL 路徑來開始執行此新頁。 2:HttpServerUtility.Transfer (IHttpHandler, Boolean)
說明:終止當前頁的執行,而後使用一個實現 IHttpHandler 接口的自定義 HTTP 處理程序開始新請求的執行,並指定是否要清除 QueryString 和 Form 集合。 3:HttpServerUtility.Transfer (String, Boolean)
說明:終止執行當前頁,並開始使用新頁的指定 URL 路徑來執行新頁。指定是否清除 QueryString 和 Form 集合。
兩種重定向方法的區別:
在使用Response.Redirect()的時候Response.Redirect()是給客戶機分配一個新的URL,因爲Response.Redirect()方法其實是經過META標記來執行資源的更改,因此若是標題發送給客戶機就會產生上述的錯誤。執行的順序爲Server 發送請求 >   Client   收到信息確認返回 > Server 請求重定向 > test.aspx。
在使用Server.Transfer()的時候它的一切動做都在Server端進行,因此相對而言,它的重定向速度比前都要快得多。它有兩個參數,一個爲重定向頁面,一個爲布爾值(用來指定是否保存原頁面表單的信息)。它僅僅在重定向的時候帶了一個狀態信息,也就是用ViewState保存了重定向前的頁面的信息。
不過Server.Transfer()方法只能重定向同一臺服務器的頁面而Response.Redirect()則能夠定向到其餘的服務器如Response.Redirect(「www.baidu.com」)。
因此在標題發送到客戶機後使用Response.Redirect()方法就會產生錯誤,引起HttpException異常。ui

url

相關文章
相關標籤/搜索