日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET中Response.Redirect()方法深度剖析

發(fā)布時間:2024/9/20 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET中Response.Redirect()方法深度剖析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文中,我們將借助http分析工具Fiddler,來對Response.Redirect()方法的整個流程進(jìn)行剖析

首先在Visual Studio中新建一個網(wǎng)站,在Default頁面的Page_Load事件中寫下Response.Redirect("http://www.baidu.com");

然后添加一個Page_LoadComplete事件處理方法。

最終效果如下:

在12和17行設(shè)置了斷點,方便對整個過程進(jìn)行觀察。

打開Fiddler,用以觀察整個過程中的HTTP數(shù)據(jù)。

點擊“調(diào)試”按鈕

程序開始執(zhí)行。

這時Fiddler中出現(xiàn)了一條數(shù)據(jù):

這是瀏覽器向http://localhost:53765/WebSite2/Default.aspx 發(fā)出了一個GET請求。

這條THHP GET請求導(dǎo)致服務(wù)器端的程序開始執(zhí)行,執(zhí)行到12行時遇到斷點,于是停下,此時還沒有執(zhí)行Response.Redirect語句。

這時候服務(wù)器還沒有對剛才瀏覽器發(fā)出的請求作出響應(yīng),所以在Fiddler中,并沒有讀到這次HTTP請求的響應(yīng)。

然后我在服務(wù)器端按F5,使程序繼續(xù)執(zhí)行。當(dāng)程序執(zhí)行了Response.Redirect語句之后,在Fiddler中收到了服務(wù)器端的回應(yīng)。

很明顯,服務(wù)器端并沒有返回給我們頁面的Default頁面的html數(shù)據(jù),而是給了一個302 Found,并在Location中給出了“http://www.baidu.com”, 這就是在告訴瀏覽器:請重新發(fā)出一個HTTP請求,所請求的URL為"http://www.baidu.com"

瀏覽器于是按照吩咐,重新發(fā)出了一個http的請求

這次是向百度的服務(wù)器發(fā)出了一個GET請求。

然后百度返回了如下數(shù)據(jù):

這次是200 OK,content-type 是html,后邊跟的是百度主頁的html代碼

然后瀏覽器根據(jù)這個返回數(shù)據(jù),解析html代碼,在我們的屏幕上將百度的樣子顯示了出來

并且,這個過程中我們注意到:Page_LoadComplete()方法并沒有被執(zhí)行,這說明當(dāng)服務(wù)器執(zhí)行到Response.Redirect語句時,會立即中斷頁面的生命周期,直接向客戶端返回信息,讓客戶端進(jìn)行重定向操作。

整個過程就是這樣了。

另外

ASP.NET 4 增加了一個RedirectPermanent方法,該方法同樣是重定向,但生成的HTTP響應(yīng)狀態(tài)不是上邊所演示的302,而是301(永久跳轉(zhuǎn))

301是對搜索引擎最友好的重定向方式。

那么什么叫做對搜索引擎友好呢?

比如你有個網(wǎng)站http://www.foo.com ,當(dāng)人們訪問http://www.foo.com 這個URL時,你就把他們重定向到http://www.foo.com/widgets/,那么當(dāng)搜索引擎爬到http:www.foo.com這個網(wǎng)址時,如果它不能很好地跟隨重定向,則它將認(rèn)為http://www.foo.com頁面時沒有內(nèi)容的,所以這個頁面的排名將會非常靠后。

如果我們把一個地址采用301 跳轉(zhuǎn)方式跳轉(zhuǎn)的話,搜索引擎會把老地址的PageRank等信息帶到新地址,同時在搜索引擎索引庫中徹底廢棄掉原先的老地址。

這只是很簡單的敘述,其實關(guān)于搜索引擎友好的問題很復(fù)雜,欲了解更多請自行搜索之。

評論: Response.Redirect的實質(zhì)是拋了一個異常 從它中斷生命周期來看,確實是拋了個異常。Response.Redirect這種重定向方式有時候會出問題,尤其是當(dāng)客戶端不是桌面瀏覽器的時候。 Fiddler怎么配置成本機也可以檢測 在localhost后面加個點Fiddler就能攔截請求了。例如:http://localhost.:3435/Login.aspx。就OK啦。 會報線程中止的錯誤,可以使用
Response.Redirect("URL",false);
第二個參數(shù)表示繼續(xù)執(zhí)行頁面生命周期

總結(jié)

以上是生活随笔為你收集整理的ASP.NET中Response.Redirect()方法深度剖析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。