Использование маршрутизации URL для веб-форм с файлами .ashx

Я разрабатываю веб-сайт .NET 3.5, основанный на веб-формах, который использует URL-маршрутизацию. Пока я создал несколько маршрутов, и у меня не было проблем. У меня теперь есть .ashx файл, который будет обрабатывать отправку .pdf файлов из таблицы в SQL Server на сайт, когда кто-то нажимает на ссылку. Обычно, когда я создаю обработчик, он выглядит следующим образом:

return BuildManager.CreateInstanceFromVirtualPath("~/ViewItem.aspx", typeof(Page)) as Page;

Для моего файла .ashx я попытался:

return BuildManager.CreateInstanceFromVirtualPath("~/FileServer.ashx", typeof(Page)) as Page;

Это не работает, потому что fileerver.ashx не является страницей, поэтому выставляете ее как typeof (Страница)), поскольку страница будет терпеть неудачу. Что я делаю VirtualPath вместо страницы или есть какой-то другой способ, которым я должен это делать.

2 ответа

используйте typeof(IHttpHandler) вместо typeof(Page)

Это базовый класс файла ashx. Также измените тип возврата с страницы на IHttpHandler. Затем обновите любой другой код, который зависит от того, что он является страницей.


Это обработчик HTTP, поэтому вы, вероятно, можете использовать его тип интерфейса IHttpHandler для трансляции. Но вы не можете использовать страницу; вы должны использовать тип, наследуемый обработчиком.

licensed under cc by-sa 3.0 with attribution.