[ERROR]找不到要求類型 'GET' 的 HTTP 處理常式。

在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 處理常式。」的錯誤,如下,

image

 

發生原因

參考 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 的網頁。

image

 

2.使用 HttpContext.RewritePath 方法

這樣 URL 就不會被改掉,適用在 BeginRequest 等事件中使用!

image

 

參考資料

KB320439

Response.Redirect

HttpContext.RewritePath 方法

Server.Transfer throws Error executing child request. How to resolve?

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^