ASP.net IHttpHandler для выполнения файла .aspx
-
21-08-2019 - |
Вопрос
Как правильно заставить IHttpHandler обрабатывать запрос на существующей странице .aspx?Я хотел бы иметь возможность скомпилировать файл .aspx в IHttpHandler, а затем обработать запрос.Существует метод PageParser.GetCompiledPageInstance, однако в документации указано, что он не предназначен для прямого использования из кода.Я знаю, что могу автоматически направлять файлы apsx или выполнять RewritePath, однако я хотел бы иметь ссылку на объект на обработчик.
Решение
Вот один быстрый и грязный способ сделать это:
var virtualPath = "~/foo/bar.aspx"
var output = HttpContext.Current.Response.Output;
// Get the compiled page type (i.e. foo_bar_aspx)
Type controlType = BuildManager.GetCompiledType(virtualPath);
// "new()" it up
var pageInstance = Activator.CreateInstance(controlType);
// Execute it
HttpContext.Current.Server.Execute(pageInstance, output, true);
Не связан с StackOverflow