Dodaję routing ASP.NET do starszej aplikacji do obsługi formularzy internetowych. Używam niestandardowego HttpHandler
do przetwarzania wszystkiego. W niektórych sytuacjach chciałbym zmapować określoną ścieżkę z powrotem do pliku aspx
, więc muszę po prostu przekazać kontrolę do domyślnego HttpHandler dla asp.net.Wywołanie domyślnego programu obsługi stron WWW asp.net HttpHandler z niestandardowego programu obsługi
Najbliżej stałam jest to
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
}
To nic nie robi, nie ma nic do strumienia wyjściowego. Dokumentacja MS dla System.Web.UI.Page (jako IHttpHandler) mówi coś do skutku "nie wywołuj metody ProcessRequest. Jest do użytku wewnętrznego."
Wygląda na to, że można to zrobić za pomocą MVC, np. : MvcHttpHandler doesn't seem to implement IHttpHandler
Jest też coś, co wydaje się, że po prostu tworzy procedurę obsługi stron dla pliku aspx, ale jest wewnętrzna i nie mogę jej użyć bezpośrednio.
Ta strona: http://msdn.microsoft.com/en-us/library/bb398986.aspx odnosi się do "domyślnego programu obsługi asp.net", ale nie identyfikuje klasy ani nie wskazuje, w jaki sposób można jej użyć.
Jakieś pomysły na to, jak mogę to zrobić? Czy to możliwe?
Próbuję odwzorować inną trasę do pliku, np. Chcę "/ a/b/c" wywołać "default.aspx? Ścieżka = a/b/c" bez przekierowania. Ignoruję już * .aspx. –
+1 za nadmierne komplikowanie. Przekierowania to nic wielkiego. Dodatkowo twoja odpowiedź jest świetna dla bardziej ogólnych haseł wyszukiwania w Google, które prowadzą do tej strony. – Thabo