在ASP.NET程式要,透過 Server.Transfer or Server.Execute 來將網頁轉到 ASP or PHP 的網頁
,會發生「找不到要求類型 'GET' 的 HTTP 處理常式。」或是「找不到要求類型 'POST' 的 HTTP 處理常式。」的錯誤。
要如何解決呢?
問題描述
在ASP.NET程式要,透過 Server.Transfer or Server.Execute 來將網頁轉到 ASP or PHP 的網頁
,會發生「找不到要求類型 'GET' 的 HTTP 處理常式。」或是「找不到要求類型 'POST' 的 HTTP 處理常式。」的錯誤,如下,
發生原因
參考 KB320439
Microsoft 網際網路資訊服務 (IIS) 會分派 Server.Transfer 或 Server.Execute 要求到適當的網際網路伺服器應用程式發展介面 (ISAPI) 副檔名根據提出要求的檔案的副檔名。
比方說.aspx 頁面的要求被發送至 Aspnet_isapi.dll ISAPI 擴充程式。
要求分派到適當的 ISAPI 擴充程式之後,ISAPI 擴充程式無法呼叫另一個 ISAPI 擴充程式。
您收到因為 Aspnet_isapi.dll 檔案處理要求的 ASP.NET 網頁,無法轉寄至 Asp.dll 檔的處理要求的 ASP 網頁要求中所列的錯誤訊息。
解決方式
1.使用 Response.Redirect
但是這樣 URL 會變成要 Redirect 的網頁。
2.使用 HttpContext.RewritePath 方法
這樣 URL 就不會被改掉,適用在 BeginRequest 等事件中使用!
參考資料
Server.Transfer throws Error executing child request. How to resolve?
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^