2012-03-30 80 views
1

我在IIS 7中設置了錯誤處理以轉發到404頁面,但查詢字符串似乎沒有被傳遞過來。將查詢字符串傳遞到404頁面

例如,此頁面不存在,因此其引導至404頁:

www.mysite.com/nonexistingpage.aspx?id=1 

在404頁,在Page_Load,因爲它似乎並不像它我無法訪問ID = 1曾經到達404頁面。因此,試圖用這些方法都不起作用得到它:

Request.UrlReferrer.PathAndQuery 
Request.ServerVariables["HTTP_REFERER"] 

在IIS中,我的路徑是輸入:/404.aspx和類型設置爲:執行URL。我怎樣才能確保查詢字符串將被傳遞到404頁面?

編輯:在Fiddler中,重定向是:/404.aspx?aspxerrorpath=/nonexistingpage.aspx,所以這確認它絕對不會被傳遞。

回答

1

您使用的是ASP.NET錯誤頁面還是IIS錯誤頁面?從你在Fiddler中談論重定向的事實看,我認爲你使用的是ASP.NET錯誤頁面,但ExecuteURL建議你使用IIS錯誤頁面。或者,你也可以將ASP.NET和ASP.NET混合在一起。

最好的選擇是爲404頁面使用IIS錯誤頁面。這可以讓你做你想做什麼:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors> 
      <remove statusCode="404" subStatusCode="-1" /> 
      <error statusCode="404" prefixLanguageFilePath="" path="/404.aspx" responseMode="ExecuteURL" /> 
     </httpErrors> 
    </system.webServer> 
</configuration> 

現在,當/404.aspx叫你不存在的網頁,查詢字符串設定爲:

404;http://www.mysite.com/nonexistingpage.aspx?id=1 
相關問題