ASP.net IHttpHandler для выполнения файла .aspx - PullRequest
1 голос
/ 13 декабря 2008

Как правильно заставить IHttpHandler иметь существующую страницу ASPX для обработки запроса? Я хотел бы иметь возможность скомпилировать файл .aspx в IHttpHandler и затем обработать запрос. Существует метод PageParser.GetCompiledPageInstance, однако в документации говорится, что он не предназначен для непосредственного использования из кода. Я знаю, что я могу автоматически направлять файлы apsx или выполнять RewritePath, однако мне бы хотелось иметь ссылку на объект для обработчика.

1 Ответ

3 голосов
/ 13 декабря 2008

Вот один быстрый и грязный способ сделать это:

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);
...