我将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