Tôi đang thêm định tuyến ASP.NET vào ứng dụng webforms cũ hơn. Tôi đang sử dụng tùy chỉnh HttpHandler
để xử lý mọi thứ. Trong một số trường hợp, tôi muốn ánh xạ một đường dẫn cụ thể trở lại một tệp aspx
, vì vậy tôi cần phải chuyển quyền kiểm soát trở lại HttpHandler mặc định cho asp.net.Gọi asp.net HttpHandler mặc định từ trình xử lý tùy chỉnh
Gần nhất tôi đã nhận được là này
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
}
Nó không làm bất cứ điều gì, không có gì đầu ra cho dòng. Tài liệu của MS cho System.Web.UI.Page (như là một IHttpHandler) nói điều gì đó về hiệu ứng của "không gọi phương thức ProcessRequest. Nó dùng để sử dụng nội bộ."
Nhìn xung quanh, có vẻ như bạn có thể làm điều này với MVC, ví dụ: : MvcHttpHandler doesn't seem to implement IHttpHandler
Ngoài ra còn có điều này System.Web.UI.PageHandlerFactory
xuất hiện rằng nó sẽ chỉ tạo Trình xử lý trang cho tệp aspx, nhưng nội bộ và tôi không thể sử dụng trực tiếp.
Trang này: http://msdn.microsoft.com/en-us/library/bb398986.aspx đề cập đến "trình xử lý asp.net mặc định" nhưng không xác định một lớp học hoặc đưa ra bất kỳ chỉ dẫn nào về cách người dùng có thể sử dụng nó.
Bất kỳ ý tưởng nào về cách tôi có thể thực hiện việc này? Có thể không?
Tôi đang cố gắng ánh xạ tuyến đường khác đến tệp, ví dụ: Tôi muốn "/ a/b/c" để gọi "default.aspx? Path = a/b/c" mà không cần chuyển hướng. Tôi đã bỏ qua * .aspx. –
+1 vì không quá phức tạp. Chuyển hướng không phải là vấn đề lớn. Cộng với câu trả lời của bạn là rất tốt cho các thuật ngữ tìm kiếm google chung chung hơn mà đưa bạn đến trang này. – Thabo