2013-02-06 30 views
3

在回顧下面的代碼後,我注意到Context.RewritePath的調用在某種程度上不會丟失查詢字符串,即使它在沒有查詢字符串的情況下被調用。有沒有解釋查詢字符串維護原因的文檔?爲什麼Context.RewritePath維護查詢字符串?

//URL relative path to ashx files is wrong to to path rewriting. 
if (Request.Url.LocalPath.EndsWith(".ashx")) { 
    Context.RewritePath(Request.Url.LocalPath 
     .Substring(Request.Url.LocalPath.LastIndexOf("/") + 1)); 
} 

編輯:我不問如何解決這個問題;該代碼的行爲正確。我只是要求提供這種行爲的文件。

回答

0

你基本上正在重寫路徑,在大多數情況下,查詢需要保持傳遞給新的路徑。

例如,一個名爲「getDocumentWithEnhancements.aspx」的新文檔檢索頁面與舊的「getDocument.aspx」相反。兩者都需要一個有用的參數,但是您希望使用新參數。 RewritePath將完成這項工作,因爲它將查詢傳遞給舊的,並傳遞給新的。如果你想顯示某種錯誤頁面或者其他東西,那麼你可以使用重定向,或者重寫任何頁面來忽略查詢字符串。

爲什麼你不希望查詢通過?你到底在用什麼?也許這不是你需要的正確功能。

編輯:有一個重載的函數需要3個參數,其中一個是查詢字符串,您可以將它作爲null傳遞給不使用查詢字符串。

+2

我的代碼沒有問題;它正在做我想要的。我只是找不到明確指出查詢字符串被維護的任何文檔。它不會讓我感到完全明顯(即足夠明顯,證明不記錄它),如果我傳遞了任何查詢字符串,它將使用我現有的字符串,所以我希望能夠找到一些官方或半官方相應的文件。 – Brian

相關問題