Как зарегистрировать IHttpModule в Orchard, который имеет доступ к DefaultContentManager (или эквивалентному) - PullRequest
0 голосов
/ 28 июля 2011

Я пытался написать что-то для фруктового сада, который проверит все запросы на "_escaped_fragment_", обозначающий запрос сканирования ajax Google, и выполнит перенаправление 301 на нужный ресурс, который необходимо найти с помощью DefaultContentManager.

Я делал что-то подобное в предыдущем проекте, расширив IHttpModule и зарегистрировав его с помощью

<httpModules>
<add name="GoogleRedirect" type="MyNameSpace.GoogleRedirect"/>
</httpModules>

но обнаружил, что, используя тот же подход, я не могу получить доступ к диспетчеру контента фруктового сада.

т. следующее не работает

_contentManager = DependencyResolver.Current.GetService<IContentManager>();

Я также заметил, что Орчард использует Autofac и пытается заставить работать строку, похожую на ContainerBuilder().Build().Resolve<IContentManager>(), но ContainerBuilder, кажется, нигде не выставляется?

Есть ли способ получить доступ к DefaultContentManager без необходимости переписывать код, который у меня есть на данный момент? Если нет, то есть ли какой-нибудь особенный способ Орчард сделать это? Какой самый простой способ сделать это, и есть ли какие-либо руководства по выполнению чего-либо подобного / каких-либо фрагментов кода, которые я могу исследовать? Я читал документацию, но не уверен, что это лучший способ сделать это?

В любом случае продолжу читать любую благодарную помощь.

Обновление

После некоторых поисков я нашел следующий пост:

http://www.deepcode.co.uk/2011/05/real-world-orchard-cms-part-4-cleaning.html

Который имеет пример использования фильтров. На случай, если у кого-то возникнут какие-либо проблемы, я обнаружил, что моя папка «Темы» никогда не достигла ни одной из точек останова. После сравнения с другим проектом я заметил, что созданная мной тема не имеет собственного файла проекта. Чтобы разобраться в этом, я воссоздал свою тему, используя

codegen theme MyTheme /BasedOn:TheThemeMachine /CreateProject:true /IncludeInSolution:true

1 Ответ

2 голосов
/ 29 июля 2011

Нет, я не думаю, что это возможно. Есть какая-то конкретная причина, почему вам нужно сделать это в модуле, а не, скажем, в фильтре?

...