2011-12-19 2 views
2

저는 오차드 CMS를 처음 사용하고있어서 첫 번째 모듈을 작성하기 시작했습니다. 루트 웹 사이트에서 모듈이 초기화되었지만 운이 없었을 때를 감지하는 방법을 찾고있었습니다!과수원 모듈 로딩 이벤트

동료가 WebActivator 및 PreApplicationStartMethod 특성을 사용하여 시작할 때 호출 할 메서드를 구성 할 것을 제안했으나 작동하지 않았습니다.

누구든지이 작업을 수행 했습니까? 모듈 초기화에 연결할 수 있도록 IModule과 같은 과수원에서 제공하는 인터페이스가 있습니까?

답변

3

Autofac과 오차드의 모듈을 섞어서는 안됩니다. Orchard 모듈이 시작될 때 일부 코드를 실행하려면 IOrchardShellEvents 인터페이스 (활성화 된 메서드)를 구현해야합니다. 또한 Autofac에서 구현을 등록하는 것을 잊지 마세요 :

public class MyModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     builder.RegisterType<Bootstrapper>().As<IOrchardShellEvents>().InstancePerLifetimeScope(); 
    } 
} 
+0

'IOrchardShellEvents'는 내 머리 꼭대기에서'IEventHandler'를 구현 한 것이며, 이는 다시 'IDependency'를 구현 한 것이므로 위와 같이 구현을 등록 할 필요조차 없다고 생각합니다. IOrchardShellEvents를 구현하기 만하면 Orchard가 등록을 처리합니다. –

0

해결! Autofac.Module을 구현하고 Load (ContainerBuilder) 메서드를 재정의하십시오!

using Autofac; 

public class MyModule : Module 
{ 
    protected override void Load(ContainerBuilder builder) 
    { 
     // Module initialization here! 
    } 
} 
+1

을이 진입 점 인 반면, 올바른 아니다, 다른 답변을 참조 –

+0

이 2011 년 가장 좋은 대답이었다 경우, 올바른 아니다 지금 대답하십시오. IOrchardShellEvents 또는 IFeatureEventHandler를 사용하십시오. –

+1

보다 구체적으로, 모듈이 처음 활성화 될 때뿐만 아니라 Orchard가 초기화 될 때마다 통지 받기를 원하기 때문에 IOrchardShellEvents를 원할 것입니다. –

5

관심있는 이벤트 핸들러가 두 가지 있습니다. IFeatureEventHandlerIOrchardShellEvents. IFeatureEventHandler 인터페이스를 사용하면 모듈을 활성화, 비활성화, 설치 및 제거 할 수 있습니다. IOrchardShellEvents 인터페이스는 오차드 쉘의 활성화 및 종료를위한 후크를 제공합니다. 거기에 뭔가가 당신을 위해 속임수를 써야합니다!