2008-11-26 113 views
2

在asp.net 3.5中,我重寫URL爲什麼不重寫URL?

http://www.abc.com/archive/1108/harpersdecember

以下

http://www.abc.com/article.aspx?docId=78

我使用這個代碼來做到這一點:

   Context.RewritePath("/article.aspx?docId=78"); 

它在本地很好地工作,但是當我上傳到遠程web服務器時,我得到一個404當tryi ng來引用上面的頁面。任何建議爲什麼它在本地工作,但不是遠程?

+0

如果是IIS7(Integrated或Classic),你能否提到IIS版本(本地和遠程)以及它的運行模式? – 2008-11-26 07:07:01

回答

2

您可能需要在遠程服務器的IIS中創建通配符映射,以便所有請求都由ASP.Net處理。如果您不這樣做,任何沒有.ASPX的URL都不會在您的URL重寫代碼中運行。

Scott Guthrie's blog有一個很好的解釋(以及其他可能使用它的原因)。

1

不是「可能」 - 你一定需要創建一個通配符映射。 Visual Studio使用基本上通過.net傳遞所有請求的cassini Web服務器。 IIS只轉發特定的映射請求(默認爲.aspx,.asmx等)到.net - 在asp.net中重寫URL需要添加一個新的映射,以便首先獲得對asp.net的請求

0

聽起來像生產服務器沒有默認的aspx頁面,即:default.aspx。如果是,它會將請求重新路由到您的處理程序。

簡單的驗證方法是創建一個目錄,並在其中放置一個default.aspx文件,並嘗試僅使用目錄名稱來請求它,即:server.com/newdir/ 如果這樣給你一個404,那麼你肯定知道它。