Я пытался написать что-то для фруктового сада, который проверит все запросы на "_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