本文地址:http://www.cnblogs.com/dengxinglin/archive/2013/05/10/3071522.html
我們有時候會根據參數來變化而顯示輸出404頁面,如aa.aspx?id=xxx,你可能通過url來重寫之后的地址是xxx.html了,
當xxx=1是數據庫存在id為1的時候我正常輸出記錄來。
假如當xxx=5,數據庫這條記錄被刪除了。我們為了5.html能夠告訴用戶和搜索引擎這個頁面是不存在的,我們需要返回404頁面了。
只需要通過下面代碼
Response.StatusCode =404; Response.Status = "404 Not Found"; Response.End();
到底是不是404我們來檢測試下
上面的代碼是完全可以輸出404頁面了的,不過你這里是要自定義輸出的內容,可以如下來:
Response.StatusCode =404; Response.Status = "404 Not Found"; Response.Write("<html xmlns=\"http://www.w3.org/1999/xhtml/" ><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title>頁面沒有找到</title><meta http-equiv=\"refresh\" CONTENT=\"0; url=/\"></head><body><div>" + "<div>這樣頁面沒有找到啊,這樣頁面沒有找到啊,這樣頁面沒有找到啊,這樣頁面沒有找到啊,這樣頁面沒有找到啊,這樣頁面沒有找到啊,這樣頁面沒有找到啊,</div></div></body></html>"); Response.End();
如果自定義輸出內容了,那就需要輸出的html字符最好大於521B,ie下面會對小於512B的替換成ie自己的頁面了。
不過好像看有的童鞋說,Response.Redirect("404.html")不是一樣會顯示一個404頁面里嗎,會改變當前的url地址,而Response.Redirect是重定向的。
我通過Server.Transfer不是一樣實現了404頁面嗎??
Response.StatusCode = 404; Response.Status = "404 Not Found"; Server.Transfer("404.html");//Response.Transfer方法(404.html在服務器不存在)
用上面是可以輸出一個404的頁面了,而且url地址也沒有改變。那是不是就是返回404了呢??
我們查看它返回的狀態碼如下圖
發現了吧,返回的302狀態碼。
用Response.Redirect或者Server.Transfer都是重定向的,不要來用做404輸出!!