2011-01-17 1 views
0

У нас есть веб-сайт, который мы недавно выпустили, основываясь главным образом на SharePoint. Некоторым сайтам необходимо было вернуть только прямой XML. Консультанты проекта реализовали xml, как страницы .aspx, которые записывают объект ответа в метод page_load.Можно ли перенаправить ссылку, которая заканчивается на .aspx на .ashx?

После непродолжительного изучения этого вопроса, я полагаю, что это, вероятно, неправильный способ сделать это, потому что он вызывает все дополнительные события для страницы ASPX, которая нам не нужна.

Вот мой вопрос, я хочу воссоздать эти функции как .ashx ссылки с httphandler. Тем не менее, я хочу иметь возможность сохранить оригинальные ссылки, которые закончились в .aspx, и получить параметры, которые сопровождают их, чтобы решить, какой тип XML будет возвращен.

Возможно ли переписать/перенаправить конечные ссылки .aspx на ссылку .ashx. Или это может заставить сервер IIS интерпретировать каждый .aspx неправильно?

ответ

0

Я думаю, что вы, вероятно, повезло ...

Мы сделали подобную вещь. Наше веб-приложение для электронной коммерции принимает только файлы JPG, PNG и GIF в качестве изображений для продуктов, но мы хотели, чтобы каждое изображение было динамически создано для каждого продукта.

Итак, мы переназначили файлы JPG, PNG и GIF, чтобы стать обработчиком.

Однако мы не хотим ВСЕ Файлы JPG, PNG и GIF должны отображаться, поскольку они были бы очень неэффективны для статических файлов, поэтому мы только сделали некоторые из них.

Вот как это сделать.

Если все ваши файлы ASPX соответствуют аналогичной файловой спецификации, к которой не принадлежат никакие другие файлы, добавьте это в свой web.config под номером <httpHandlers>.

<add path="filespec*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/> 

Если они не все разделяют файл-спецификации, вы должны добавить их один за одним в web.config:

<add path="oldaspx1.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/> 
<add path="oldaspx2*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/> 
<add path="oldaspx3*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/> 

Чтобы сделать это ли Полезная нет вы работаете в интегрированном трубопроводе IIS7, вы можете также добавить подобные строки в <handlers> элемент

Затем, когда приходит запрос на «oldaspx1.aspx», он будет получать обрабатываются (очень эф без запуска жизненного цикла страницы) с помощью пользовательского обработчика.

Если это решает вашу проблему, отметьте ее как принятый ответ с галочкой слева.