示例#1
0
        public void ConfigureContainer(Container container)
        {
            var key          = Configuration["TokenKey"];
            var sqlConn      = Configuration["connectionString"];
            var publicKey    = new X509Certificate2(Convert.FromBase64String(key)).PublicKey.Key as RSACng;
            var consulConfig = new ConsulConnectionConfiguration
            {
                Environment = Configuration["Consul:Environment"],
                Host        = Configuration["Consul:Host"],
                Token       = Configuration["Consul:Token"]
            };

            //Container Configuration
            container.Configure(config =>
            {
                //Consul config
                config.For <IConfigurationManager>().Use <ConfigurationManager>()
                .Ctor <ConsulConnectionConfiguration>("configuration").Is(consulConfig);
                //Ruffer.Security
                config.For <AsymmetricAlgorithm>().Use(publicKey);
                config.For <IEncrytionHelper>().Use <EncrytionHelper>().Ctor <byte[]>("encryptionKey")
                .Is(Convert.FromBase64String(Configuration["EncryptionKey"]));
                config.For <ITokenHelper>().Use <TokenHelper>();
                config.For <IClaimsHelper>().Use <ClaimsHelper>();
                // Config for all classes and interfaces used in Gradebook
                config.For <IBus>().Use(_bus).Singleton();
                config.For <IGrade>().Use <Grade>();
                config.For <IStudent>().Use <Student>();
                config.For <ILesson>().Use <Lesson>();
                config.For <IClassroom>().Use <Classroom>();
                config.For <DataAccessRepository <Lesson, ILesson> >().Use <LessonRepository>();
                config.For <DataAccessRepository <Student, IStudent> >().Use <StudentRepository>();
                config.For <DataAccessRepository <Classroom, IClassroom> >();
                config.For <StudentController>().Use <StudentController>();
                config.For <ISqlRepository <IStudent> >().Use <StudentSqlRepository>();
                //config.For<SqlDataAccessRepository>().Use<StudentSqlRepository>();
                config.For <IHttpContextAccessor>().Use <HttpContextAccessor>().Singleton();
                config.For <IQueryCountWrapper>().Use <QueryCountWrapper>();
            });
        }
        public static void ConfigureContainer(Container container)
        {
            var key           = ConfigurationManager.AppSettings["TokenKey"];
            var encryptionKey = ConfigurationManager.AppSettings["EncryptionKey"];
            var publicKey     = new X509Certificate2(Convert.FromBase64String(key)).PublicKey.Key as RSACryptoServiceProvider;

            var consulConfig = new ConsulConnectionConfiguration
            {
                Environment = ConfigurationManager.AppSettings["ConsulEnvironment"],
                Host        = ConfigurationManager.AppSettings["ConsulHost"],
                Token       = ConfigurationManager.AppSettings["ConsulToken"]
            };

            container.Configure(config =>
            {
                //Set container to work with contract classes
                config.For <IGrade>().Use <Grade>();
                config.For <IStudent>().Use <Student>();
                config.For <ILesson>().Use <Lesson>();
                config.For <IClassroom>().Use <Classroom>();
                config.For <IRepository <Student, IStudent> >().Use <StudentRepository>();
                config.For <ISqlRepository <IStudent> >().Use <StudentSqlRepository>();
                config.For <SqlGetAllStudentsHandler>().Use <SqlGetAllStudentsHandler>();
                //consul
                config.For <IConfigurationManager>().Use <Ruffer.Consul.ConfigurationManager>()
                .Ctor <ConsulConnectionConfiguration>("configuration").Is(consulConfig);

                // security
                config.For <AsymmetricAlgorithm>().Use(publicKey);
                config.For <TokenDecryptFilter>()
                .Use <TokenDecryptFilter>()
                .Ctor <RSA>("publicKey").Is(publicKey)
                .Ctor <string>("encryptionKey").Is(encryptionKey);
                config.For <IClaimsHelper>().Use <ClaimsHelper>();
            });
        }