public static IAppBuilder UseSimpleInjectorResolver(this IAppBuilder app, ScopedLifestyle lifestyle, Func <Container, Container> serviceRegistration) { if (app.GetSimpleInjectorResolver() == null) { //set the owin resolution context app.Properties[OWINResolutionContext] = new SimpleInjectorOwinResolutionContext(lifestyle, serviceRegistration); //shutdown delegate var token = new AppProperties(app.Properties).OnAppDisposing; if (token != CancellationToken.None) { token.Register(() => app.GetSimpleInjectorResolver().Dispose()); } app.Use(async(cxt, next) => { using (app.GetSimpleInjectorResolver().NewResolutionScope()) { await next(); } }); } return(app); }
public static IAppBuilder OnAppDisposing(this IAppBuilder builder, Action disposing) { var token = new AppProperties(builder.Properties).OnAppDisposing; if (token != CancellationToken.None) { token.Register(disposing); } return(builder); }
public static void UseServiceBusQueueMessageProcessor( this IAppBuilder app, string connectionString, string queueName, BrokeredMessageSerializer serializer, IMessageHandler messageHandler, IMessageProcessingExceptionHandler <BrokeredMessage> exceptionHandler) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (connectionString == null) { throw new ArgumentNullException(nameof(connectionString)); } if (queueName == null) { throw new ArgumentNullException(nameof(queueName)); } if (serializer == null) { throw new ArgumentNullException(nameof(serializer)); } if (messageHandler == null) { throw new ArgumentNullException(nameof(messageHandler)); } if (exceptionHandler == null) { throw new ArgumentNullException(nameof(exceptionHandler)); } var queueClient = QueueClient.CreateFromConnectionString(connectionString, queueName); CancellationToken cancellationToken = new AppProperties(app.Properties).OnAppDisposing; var processor = new BrokeredMessageProcessor( serializer, messageHandler, exceptionHandler, cancellationToken); queueClient.OnMessageAsync(processor.ProcessMessage); cancellationToken.Register(queueClient.Close); }
public static void ConfigureApplicationLifecycleEvents(this IAppBuilder app) { // Log an event on App Start WebEventSource.Log.WriteApplicationLifecycleEvent(ApplicationLifecycleEventCategory.Start); var token = new AppProperties(app.Properties).OnAppDisposing; if (token != CancellationToken.None) { token.Register(() => { // Log an event on App End WebEventSource.Log.WriteApplicationLifecycleEvent(ApplicationLifecycleEventCategory.End, TelemetryState.ApplicationEndInfo.ToString()); }); } }
public static void UseEventMessageProcessor( this IAppBuilder app, EventProcessorHost eventProcessorHost, EventDataSerializer serializer, IMessageHandler messageHandler, IMessageProcessingExceptionHandler <EventData> exceptionHandler) { if (app == null) { throw new ArgumentNullException(nameof(app)); } if (eventProcessorHost == null) { throw new ArgumentNullException(nameof(eventProcessorHost)); } if (serializer == null) { throw new ArgumentNullException(nameof(serializer)); } if (messageHandler == null) { throw new ArgumentNullException(nameof(messageHandler)); } if (exceptionHandler == null) { throw new ArgumentNullException(nameof(exceptionHandler)); } CancellationToken cancellationToken = new AppProperties(app.Properties).OnAppDisposing; var processorFactory = new EventMessageProcessorFactory( serializer, messageHandler, exceptionHandler, cancellationToken); Start(eventProcessorHost, processorFactory); cancellationToken.Register(() => Stop(eventProcessorHost)); }
public static void UseEventProcessor( this IAppBuilder appBuilder, EventProcessorHost eventProcessorHost, IMessageHandler messageHandler, IEventProcessingExceptionHandler exceptionHandler) { if (appBuilder == null) { throw new ArgumentNullException(nameof(appBuilder)); } if (eventProcessorHost == null) { throw new ArgumentNullException(nameof(eventProcessorHost)); } var processorFactory = new EventProcessorFactory(messageHandler, exceptionHandler, CancellationToken.None); eventProcessorHost.RegisterEventProcessorFactoryAsync(processorFactory).Wait(); CancellationToken appDisposing = new AppProperties(appBuilder.Properties).OnAppDisposing; appDisposing.Register(() => eventProcessorHost.UnregisterEventProcessorAsync().Wait()); }