2014-01-22 6 views
2

ASP.NET 요청주기의 여러 단계에서 일부 코드를 실행해야하는 라이브러리를 만들고 있습니다.Init()가 아닌 HttpApplication 이벤트에 대한 처리기를 등록하는 방법

HttpApplication.Init()을 재정의하고 다양한 핸들러를 등록하여 웹 응용 프로그램을 작성할 때이 작업을 쉽게 수행 할 수 있습니다.

그러나 Application_Start() 중 내 라이브러리에서이 작업을 수행하려고합니다. Init()를 재정의하고 거기에서 이벤트 설정 코드를 호출해야하는 소비자에게 원하지 않습니다.

이것을 달성 할 방법이 있습니까?

여기에 내 이상적인 설정입니다 :

// in the consumer's code 
protected void Application_Start() 
{ 
    // should ideally be able to register lifecycle event handlers from the line below 
    MyLibrary.Configure(...); 
} 
+0

라이브러리가 시작될 때 IMO (I _sup pose_ 제어 라이브러리) ... HttpApplication.Init()이 전에 오랜 시간을 지났습니다 ... 그 다음에해야합니다. –

+0

라이브러리가 사용자가 방금 추가 할 수있는 (IHttpModule을 구현하는) 다양한 모듈을 노출하지 못하게 할 수 있습니까? 구성? 라이브러리가 파이프 라인에 연결되는 일반적인 방법입니다. 각 모듈은'Init'ed입니다. –

+0

@Damien_The_Unbeliever : 예제로 대답 할 수 있습니까? 특히 내 라이브러리가 이러한 모듈을 구성하는 방법 (이 라이프 사이클에 연결하는 것은 라이브러리가하는 일 중 하나 일 뿐이므로 전체 라이브러리를 모듈로 만드는 것만으로는 충분하지 않습니다). – ChaseMedallion

답변

0

당신은 그냥 할 수 있어야

Global.asax에이

여기
public class MvcApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     MyLib.Configure(this); 
    } 
} 

이를 응용 프로그램을 의미 및 이벤트의 많음이있다 라이프 사이클 이벤트 요청을 포함하여 구독 할 수 있습니다.

+0

여러 HttpApplication 인스턴스가 사용될 때이 문제가 발생하지 않습니다 (http : /stackoverflow.com/questions/6697409/how-many-instances-of-an-application-object-can-run-per-application)? – ChaseMedallion

+0

동일한 앱이 동일한 앱 풀에서 여러 인스턴스를 실행하는 경우에도 고립 된 앱 도메인에서 실행됩니다. – iamkrillin

+0

내가 게시 한 SO 질문에 대한 답변에 동의하지 않는 것 같습니다. 가능한 경우 HttpApplication 인스턴스가 재사용되지만 여러 요청이 동시에 여러 요청을 처리해야한다는 메시지가 표시됩니다. – ChaseMedallion