Exemplo n.º 1
0
        /// <summary>
        /// .Net core configuration extension
        /// </summary>
        /// <param name="services"></param>
        /// <param name="configurationCallback"></param>
        /// <returns></returns>
        public static IServiceCollection AddSignals(this IServiceCollection services, Action <FluentWebApplicationBootstrapConfiguration> configurationCallback)
        {
            StackTrace stackTrace = new StackTrace();
            var        assembly   = stackTrace.GetFrame(1).GetMethod().DeclaringType.Assembly;

            var configuration = new FluentWebApplicationBootstrapConfiguration();

            configurationCallback(configuration);
            configuration.ScanAssemblies.Add(assembly);
            configuration.Bootstrap(configuration.ScanAssemblies.ToArray());

            return(services);
        }
Exemplo n.º 2
0
        /// <summary>
        /// OWIN middleware registration extension
        /// </summary>
        /// <param name="app"></param>
        /// <param name="configurationCallback"></param>
        /// <returns></returns>
        public static IAppBuilder MapSignals(this IAppBuilder app, Action <FluentWebApplicationBootstrapConfiguration> configurationCallback)
        {
            var ass = AppDomain.CurrentDomain.GetAssemblies();
            // get entry assembly
            StackTrace stackTrace = new StackTrace();
            // TODO: workaround for tests
            var assembly = stackTrace.GetFrame(1).GetMethod().DeclaringType.Assembly;

            // configure web applicaiton
            var configuration = new FluentWebApplicationBootstrapConfiguration();

            configurationCallback(configuration);
            configuration.ScanAssemblies.Add(assembly);
            configuration.Bootstrap(configuration.ScanAssemblies.ToArray());

            // register midleware for handling session
            app.Use(async(IOwinContext context, Func <Task> next) =>
            {
                HttpContextBase httpContext = context.Get <HttpContextBase>(typeof(HttpContextBase).FullName);
                httpContext.SetSessionStateBehavior(SessionStateBehavior.Required);
                await next.Invoke();
            });

            // handle session
            app.UseStageMarker(PipelineStage.MapHandler);

            var mediator = SystemBootstrapper.GetInstance <WebMediator>();

            // mediator middleware
            return(app.Use(async(IOwinContext context, Func <Task> next) =>
            {
                if (mediator.Dispatch() != MiddlewareResult.StopExecutionAndStopMiddlewarePipe)
                {
                    await next.Invoke();
                }
            }));
        }