Estoy agregando enrutamiento ASP.NET a una aplicación webforms más antigua. Estoy usando un HttpHandler
personalizado para procesar todo. En algunas situaciones, me gustaría asignar una ruta particular a un archivo aspx
, por lo que necesito simplemente pasar el control de nuevo al HttpHandler predeterminado para asp.net.Llame al HttpHandler asp.net predeterminado desde un controlador personalizado
Lo más cerca que he conseguido es este
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
}
No sirve de nada, no hay ninguna salida al arroyo. La documentación de MS para System.Web.UI.Page (como IHttpHandler) dice algo así como "no llame al método ProcessRequest. Es para uso interno".
Al mirar a su alrededor parece que puede hacer esto con MVC, p. Ej. : MvcHttpHandler doesn't seem to implement IHttpHandler
También existe esta cosa System.Web.UI.PageHandlerFactory
que parece que solo produciría un controlador de página para un archivo aspx, pero es interno y no puedo usarlo directamente.
Esta página: http://msdn.microsoft.com/en-us/library/bb398986.aspx hace referencia al "manejador de asp.net predeterminado" pero no identifica una clase ni da ninguna indicación de cómo se podría usar.
¿Alguna idea sobre cómo puedo hacer esto? ¿Es posible?
Estoy intentando asignar una ruta diferente a un archivo, p. Quiero "/ a/b/c" para invocar "default.aspx? Path = a/b/c" sin redireccionar. Ya estoy ignorando * .aspx. –
+1 para no complicar demasiado. Los redireccionamientos no son un gran problema. Además, tu respuesta es excelente para los términos más generales de búsqueda de google que te llevan a esta página. – Thabo