2014-07-21 85 views
0

我正在構建Nancy的擴展,並且我不確定在哪裏掛入Nancy的ApplicationStartup事件。如何訂閱Nancyfx中的ApplicationStartup事件?

+0

究竟是什麼你想實現什麼?爲了什麼目的,你需要做什麼?問題太模糊。 – Phill

+0

我正在構建一個資源優化庫來精簡js和css文件。希望優化發生在應用程序啓動時發生,但不知道如何掛鉤它。 –

回答

3

如果你想在你的庫安裝時自動運行一些代碼,那麼你需要繼承南希類IApplicationStartup並編寫你的實現。

https://github.com/NancyFx/Nancy/blob/master/src/Nancy/Bootstrapper/IApplicationStartup.cs

例如,對於Nancy.Raygun我做了以下內容:

public class NancyRaygunRegistration : IApplicationStartup 
{ 
    private static readonly RaygunClient Client; 

    static NancyRaygunRegistration() 
    { 
     var apiKey = RaygunSettings.Settings.ApiKey; 

     if (string.IsNullOrWhiteSpace(apiKey)) 
     { 
      apiKey = ConfigurationManager.AppSettings["nr.apiKey"]; 
     } 

     if (apiKey == null) return; 

     Client = new RaygunClient(apiKey); 
    } 

    public void Initialize(IPipelines pipelines) 
    { 
     if (Client == null) return; 

     var raygunItem = new PipelineItem<Func<NancyContext, Exception, Response>>("Raygun", (context, exception) => 
     { 
      Client.SendInBackground(context, exception); 

      return null; 
     }); 

     pipelines.OnError.AddItemToStartOfPipeline(raygunItem); 
    } 
} 

南希會自動找到IAppliationStartup所有實現和運行它們。

其他需要考慮的事情:

IRegistrationshttps://github.com/NancyFx/Nancy/blob/master/src/Nancy/Bootstrapper/IRegistrations.cs

IRequestStartuphttps://github.com/NancyFx/Nancy/blob/master/src/Nancy/Bootstrapper/IRequestStartup.cs

IPipelineshttps://github.com/NancyFx/Nancy/blob/master/src/Nancy/Bootstrapper/IPipelines.cs