我將ASP.NET路由添加到舊的Webforms應用程序。我正在使用自定義HttpHandler
來處理所有內容。在某些情況下,我想將特定路徑映射回aspx
文件,所以我需要將控制權交還給asp.net的默認HttpHandler。從自定義處理程序中調用默認的asp.net HttpHandler
我已經得到的最接近的是這
public void ProcessRequest(HttpContext context) {
// .. when we decide to pass it on
var handler = new System.Web.UI.Page();
handler.ProcessRequest(context);
MemoryStream steam = new MemoryStream();
StreamWriter writer = new StreamWriter(stream);
HtmlTextWriter htmlWriter = new HtmlTextWriter(writer);
handler.RenderControl(htmlWriter);
// write headers, etc. & send stream to Response
}
它沒有做任何事情,沒有什麼輸出流中。 MS的System.Web.UI.Page文檔(作爲一個IHttpHandler)會說「不要調用ProcessRequest方法,它是爲了內部使用」。
從環顧四周,您似乎可以用MVC做到這一點,例如, :MvcHttpHandler doesn't seem to implement IHttpHandler
還有這個東西System.Web.UI.PageHandlerFactory
它似乎只會爲aspx文件產生一個Page handler,但它是內部的,我不能直接使用它。
此頁面:http://msdn.microsoft.com/en-us/library/bb398986.aspx引用「默認的asp.net處理程序」,但不標識類或給出任何指示如何使用它。
關於如何做到這一點的任何想法?可能嗎?
我試圖將不同的路由映射到文件,例如:我希望「/ a/b/c」在不重定向的情況下調用「default.aspx?path = a/b/c」。我已經忽略* .aspx。 – 2012-03-29 18:46:14
+1不過分複雜。重定向沒有什麼大不了的。此外,您的答案非常適合使用此頁面的更一般的Google搜索條款。 – Thabo 2014-06-03 22:41:00