Example #1
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            GlobalConfiguration.Configure(cfg =>
            {
                WebApiConfig.Register(cfg);
            });

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            var windsor = new WindsorContainer();

            windsor.Register(Component.For <IServiceProvider>().Instance(new ServiceProviderWrapper(windsor)));

            var jasonConfig = new DefaultJasonServerConfiguration(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "bin"))
            {
                Container  = new WindsorJasonContainerProxy(windsor),
                TypeFilter = t => !t.Is <MissingHandler>()
            };

            jasonConfig.AddEndpoint(new Jason.WebAPI.JasonWebAPIEndpoint(GlobalConfiguration.Configuration)
            {
                //TypeNameHandling = TypeNameHandling.Objects,
                IsCommandConvention = t =>
                {
                    return(t.Namespace != null && t.Namespace == "SampleTasks");
                }
            });

            jasonConfig.AddEndpoint(new Jason.Client.JasonInProcessEndpoint());
            jasonConfig.UsingAsFallbackCommandHandler <MissingHandler>();
            jasonConfig.Initialize();

            GlobalConfiguration.Configuration.DependencyResolver = new DelegateDependencyResolver()
            {
                OnGetService = t =>
                {
                    if (windsor.Kernel.HasComponent(t))
                    {
                        return(windsor.Resolve(t));
                    }

                    return(null);
                },
                OnGetServices = t =>
                {
                    if (windsor.Kernel.HasComponent(t))
                    {
                        return(windsor.ResolveAll(t).OfType <Object>());
                    }

                    return(new List <Object>());
                }
            };
        }