2014-07-21 82 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