asp.net動態輸出404


 本文地址: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輸出!!

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM