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);
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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));
        }
Exemple #6
0
        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());
        }