2008-09-30 40 views
9

我有一個自定義404頁面的ASP.NET 2.0網站。當找不到內容時,該網站將使用查詢字符串添加aspxerrorpath =/mauro.aspx來提供自定義404頁面。 404頁本身送達的200的HTTP狀態要嘗試解決這個我添加Google 404和.NET自定義錯誤頁面

protected void Page_Load(object sender, EventArgs e) 
    { 
     Response.StatusCode = 404; 
    } 

我增加了谷歌小工具,並與它的兩個問題。在Internet Explorer 7它不顯示它應該在哪裏。如果我將它添加到內容中,char 79行226或其附近會出現「未知錯誤」;如果我將它添加到頭部部分,搜索框會出現在內容上方。在Firefox中,它工作正常。

所以我的問題是:

  1. 如何使小部件出現 內聯?
  2. 如何讓我的錯誤頁面 呈現爲與原來 名和文件是路徑404 要求,這樣,當我要求 mauro.aspx我得到了 404頁的內容,但與網址 mauro.aspx? (我以爲我會 必須做一些URL rewriting在 begin_request Global.asax文件,但 想這證實了之前我 做傻事。)

回答

1

我做這個處理的404在global.asax文件

protected void Application_BeginRequest(object sender, EventArgs e) 
{ 
    string url = Request.RawUrl; 
    if ((url.Contains(".aspx")) && (!System.IO.File.Exists(Server.MapPath(url)))) 
    { 
     Server.Transfer("/Error/FileNotFound.aspx"); 
    } 
} 

現在,如果任何人都可以幫助我與谷歌小部件,這將是偉大的!

+3

這是性能的關鍵,你如果文件存在與否對每個請求每一次檢查。 – 2010-11-22 10:00:22

+0

正確的,我可以將結果存儲在字典或類似的使用,以更快地檢查... – Mauro 2010-11-22 10:40:50

10

您現在可以使用ASP.NET 3.5 SP1中的新重定向模式,因此它不會重定向。它顯示了錯誤頁面,但保持URL不變:

「對於URL重定向也很好如果將web.config中的redirectMode設置爲」responseRewrite「,則可以避免重定向到自定義錯誤頁面並離開瀏覽器中的URL不變。「