2013-02-25 2 views
0

HTTML 모듈의 응용 프로그램 시작에서 일부 코드를 실행하려고합니다. Init()가 여러 번 해고 되었기 때문에 응용 프로그램이 시작되었는지 여부를 알려주는 신뢰할 수있는 플래그가 있습니까?응용 프로그램 용 플래그가 프레임 워크에서 시작 되었습니까?

public class Module : IHttpModule 
{ 
    #region IHttpModule Members 

    public void Dispose() 
    { 
     //clean-up code here. 
    } 

    public void Init(HttpApplication context) 
    { 
     //PROCESS ON APPLICATION START EVENT 
     this.OnApplicationStart(context); 
    } 

    #endregion 

    public void OnApplicationStart(HttpApplication context) 
    { 
     if (!application started??) //FRAMEWORK FLAG? 
      //DO SOMETHING 
    } 
} 
+0

IHttpModule 대신 IHttpHandler를 사용해야한다고 생각합니다. – Dai

+0

배포 가능한 항목을 만들려고하는데 web.config의 항목은 내가 생각할 수있는 가장 쉽고 간단한 침입 지침입니다. – TruMan1

답변

1

당신은 플래그를 사용할 수 있습니다 : 당신이 .NET 4.0을 표적으로하는 경우이 작업을 수행 할 HttpModules는을 사용하여 더 나은 대안으로

public class Module : IHttpModule 
{ 
    private static bool isStarted = false; 
    private static object syncRoot = new object(); 

    public void Dispose() 
    { 
     //clean-up code here. 
    } 

    public void Init(HttpApplication context) 
    { 
     if (!isStarted) 
     { 
      lock (syncRoot) 
      { 
       if (!isStarted) 
       { 
        //PROCESS ON APPLICATION START EVENT 
        this.OnApplicationStart(context); 
        isStarted = true; 
       } 
      } 
     } 
    } 

    public void OnApplicationStart(HttpApplication context) 
    { 
     //DO SOMETHING 
    } 
} 

또는 나중에 당신이 아주 인 WebActivator를 사용하는 것이 좋습니다 Microsoft.Web.Infrastructure에 기반한 편리한 패키지로 별도의 라이브러리에 Application_Start과 같은 이벤트를 구독 할 수 있습니다.

[assembly: WebActivator.PreApplicationStartMethod(typeof(WebAppInitializer), "Start")] 
namespace FooBar 
{ 
    public static class WebAppInitializer 
    { 
     public static void Start() 
     { 
      // PROCESS ON APPLICATION START EVENT 
     } 
    } 
} 

을 다음 ASP.NET 응용 프로그램에서 클래스 라이브러리를 걸리는 모든입니다 참조 :

예를 들어, 단순히 클래스 라이브러리에 다음 코드를 넣습니다.

또한이 편리한 WebActivator를 사용하여 HttpModules에 종속성 주입을 수행하고 web.config에 추가 할 필요없이 자체 등록 할 수 있습니다. 관심이있는 경우 Phil Haack은이 주제에 nice blog post을 썼습니다.