Я добавляю маршрутизацию ASP.NET в более старое приложение веб-форм. Я использую пользовательский HttpHandler
для обработки всего. В некоторых ситуациях я хотел бы отобразить конкретный путь назад к файлу aspx
, поэтому мне нужно просто передать управление HttpHandler по умолчанию для asp.net.Позвоните по умолчанию 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-файла, но она внутренняя, и я не могу использовать ее напрямую.
Эта страница: http://msdn.microsoft.com/en-us/library/bb398986.aspx относится к «обработчику asp.net по умолчанию», но не идентифицирует класс и не дает никаких указаний на способ его использования.
Любые идеи о том, как я могу это сделать? Является ли это возможным?
Я пытаюсь сопоставить другой маршрут с файлом, например. Я хочу, чтобы «/ a/b/c» вызывал «default.aspx? Path = a/b/c» без перенаправления. Я уже игнорирую * .aspx. –
+1 для не слишком высокого уровня. Переадресация не имеет большого значения. Кроме того, ваш ответ отлично подходит для более общих поисковых запросов Google, которые помогут вам перейти на эту страницу. – Thabo