Вопрос

Как правильно заставить 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top