예제 #1
0
        //private readonly Dictionary<string, SqlSugarClient> _clients;

        public DbFactory(IOptions <SqlSugarConfig> options)
        {
            //this._clients = new Dictionary<string, SqlSugarClient>();
            _configs = new Dictionary <string, ConnectionConfig>();
            SqlSugarConfig sugarConfig = options.Value;

            foreach (var item in sugarConfig.Connections)
            {
                _configs.Add(item.Name, new ConnectionConfig()
                {
                    ConnectionString      = item.ConnectionString.Replace("{programpath}", Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)).ToSystemPath(),
                    DbType                = item.DbType,
                    IsAutoCloseConnection = true,
                    InitKeyType           = InitKeyType.Attribute,
                    IsShardSameThread     = true,
                    //AopEvents = new AopEvents
                    //{
                    //    OnLogExecuting = (sql, p) =>
                    //    {
                    //        Console.WriteLine(sql);
                    //        Console.WriteLine(string.Join(",", p?.Select(it => it.ParameterName + ":" + it.Value)));
                    //    }
                    //}
                });
            }
        }
예제 #2
0
        public virtual IServiceProvider GetServices()
        {
            var services = new ServiceCollection();

            services.AddSingleton <IConfiguration>(new ConfigurationBuilder().Build());
            var Configuration = services.BuildServiceProvider().GetService <IConfiguration>();

            services.AddJson(o =>
            {
                o.JsonType = JsonType.Jil;
            });
            services.AddDIProperty();
            services.AddOptions();
            services.AddXsrf();
            services.AddXss();
            var config2        = ConfigUtil.GetJsonConfig();
            var sqlSugarConfig = SqlSugarConfig.GetConnectionString(config2);

            services.AddSqlSugarClient <SqlSugarClient>(config =>
            {
                config.ConnectionString      = sqlSugarConfig.Item2;
                config.DbType                = sqlSugarConfig.Item1;
                config.IsAutoCloseConnection = true;
                config.InitKeyType           = InitKeyType.Attribute;
                //config.IsShardSameThread = true;
            });
            services.AddHttpContextAccessor();
            services.AddHtmlEncoder();
            services.AddBr();                  //br压缩
            services.AddResponseCompression(); //添加压缩
            services.AddMemoryCache();
            services.AddMediatR(typeof(BaseControllerTest).GetTypeInfo().Assembly);

            services.AddNlog(); //添加Nlog
            services.AddLogging();
            RegisterBase(services);
            ServiceExtension.RegisterAssembly(services, "Services");
            ServiceExtension.RegisterAssembly(services, "Repository");
            serviceDescriptors = services;
            services.AddSingleton <IApplicationBuilder>(new ApplicationBuilder(services.BuildServiceProvider()));
            var app = services.BuildServiceProvider().GetService <IApplicationBuilder>();

            app.UseGlobalCore();
            return(services.BuildServiceProvider());
        }
예제 #3
0
        public static void RegisterAll()
        {
            var builder = new ContainerBuilder();

            //注册MvcApplication程序集中所有的控制器
            builder.RegisterControllers(typeof(MvcApplication).Assembly);
            //注册MvcApplication程序集中所有的过滤器
            builder.RegisterFilterProvider();
            //注册仓储层服务

            /*
             * builder.RegisterType<PostRepository>().As<IPostRepository>();
             * builder.RegisterType<PostService>().As<IPostService>();
             */
            //数据源的注入
            SqlSugarConfig.RegisterDbs(builder);
            RedisConfig.RegisterRedis(builder);
            //Interceptors的注入
            builder.RegisterAssemblyTypes(Assembly.Load("WebCommons"))
            .Where(t => t.Name.EndsWith("Interceptor"))
            .SingleInstance()
            .PropertiesAutowired();
            //Repositories的注入
            builder.RegisterAssemblyTypes(Assembly.Load("WebRepositories"))
            .Where(t => t.Name.EndsWith("DaoImpl"))
            .AsImplementedInterfaces()
            .SingleInstance()
            .PropertiesAutowired();
            //Services的注入
            builder.RegisterAssemblyTypes(Assembly.Load("WebServices"))
            .Where(t => t.Name.EndsWith("ServiceImpl"))
            .AsImplementedInterfaces()
            .SingleInstance()
            .PropertiesAutowired()
            .EnableInterfaceInterceptors()
            .InterceptedBy(typeof(LoggerInterceptor), typeof(CacherInterceptor));

            var container = builder.Build();

            //设置依赖注入解析器
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
            //容器实例
            AutofacUtils.Container = container;
            AutofacUtils.Types     = Assembly.Load("WebServices").GetTypes().ToList();
        }
예제 #4
0
        //IServiceProvider This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(option =>
            {
                option.Filters.Add <BaseExceptionAttribute>();
                //option.Filters.Add<FilterXSSAttribute>();
                option.Conventions.Add(new ApplicationDescription("keywords", Configuration["sys:keywords"]));
                option.Conventions.Add(new ApplicationDescription("description", Configuration["sys:description"]));
                option.Conventions.Add(new ApplicationDescription("company", Configuration["sys:company"]));
                option.Conventions.Add(new ApplicationDescription("customer", Configuration["sys:customer"]));
            }).SetCompatibilityVersion(CompatibilityVersion.Latest);
            //services.Configure<CookiePolicyOptions>(options =>
            //{
            //    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            //    options.CheckConsentNeeded = context => true;
            //    options.MinimumSameSitePolicy = SameSiteMode.None;
            //});
            services.AddTimedJob();
            services.AddOptions();
            services.AddXsrf();
            services.AddXss();
            services.AddAuthentication(c =>
            {
                c.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                c.DefaultChallengeScheme    = CookieAuthenticationDefaults.AuthenticationScheme;
            }).AddCookie(cfg =>
            {
                cfg.LoginPath  = "/Login/Index";
                cfg.LogoutPath = "/Login/Logout";
                //cfg.ExpireTimeSpan = TimeSpan.FromDays(1);
                //cfg.Cookie.Expiration = TimeSpan.FromDays(1);
                cfg.Cookie.Name     = CookieAuthenticationDefaults.AuthenticationScheme;
                cfg.Cookie.Path     = "/";
                cfg.Cookie.HttpOnly = true;
                //cfg.SlidingExpiration = true;
            });
            var sqlSugarConfig = SqlSugarConfig.GetConnectionString(Configuration);

            services.AddSqlSugarClient <SqlSugarClient>(config =>
            {
                config.ConnectionString      = sqlSugarConfig.Item2;
                config.DbType                = sqlSugarConfig.Item1;
                config.IsAutoCloseConnection = true;
                config.InitKeyType           = InitKeyType.Attribute;
                //config.IsShardSameThread = true;
            });
            services.AddJson(o =>
            {
                o.JsonType = JsonType.Jil;
            });
            //services.AddDIProperty();
            services.AddHttpContextAccessor();
            services.AddHtmlEncoder();
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            services.AddBr();                  //br压缩
            services.AddResponseCompression(); //添加压缩
            services.AddResponseCaching();     //响应式缓存
            services.AddMemoryCache();
            services.AddMediatR(typeof(Startup).GetTypeInfo().Assembly);
            //@1 DependencyInjection 注册
            services.AddNlog(); //添加Nlog
            RegisterBase(services);
            //services.AddScoped(provider =>
            //{
            //    Func<string, SqlSugarClient> func = key =>
            //    {
            //        switch (key)
            //        {
            //            case "1":
            //                return new SqlSugarClient(new ConnectionConfig()
            //                {
            //                    ConfigId = "111",
            //                    ConnectionString = sqlSugarConfig.Item2,
            //                    DbType = sqlSugarConfig.Item1,
            //                    IsAutoCloseConnection = true,
            //                    InitKeyType = InitKeyType.Attribute,
            //                });

            //            case "2":
            //                return new SqlSugarClient(new ConnectionConfig()
            //                {
            //                    ConfigId = "222",
            //                    ConnectionString = sqlSugarConfig.Item2,
            //                    DbType = sqlSugarConfig.Item1,
            //                    IsAutoCloseConnection = true,
            //                    InitKeyType = InitKeyType.Attribute,
            //                });

            //            default:
            //                throw new NotSupportedException($"Not Support key : {key}");
            //        }
            //    };
            //    return func;
            //});
            ServiceExtension.RegisterAssembly(services, "Services");
            ServiceExtension.RegisterAssembly(services, "Repository");
            var bulid = services.BuildServiceProvider();

            ServiceResolve.SetServiceResolve(bulid);
        }
예제 #5
0
        //IServiceProvider This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc(option =>
            {
                option.Filters.Add <BaseExceptionAttribute>();
                //option.Filters.Add<FilterXSSAttribute>();
                option.Conventions.Add(new ApplicationDescription("title", Configuration["sys:title"]));
                option.Conventions.Add(new ApplicationDescription("company", Configuration["sys:company"]));
                option.Conventions.Add(new ApplicationDescription("customer", Configuration["sys:customer"]));
            }).SetCompatibilityVersion(CompatibilityVersion.Latest);
            //services.Configure<CookiePolicyOptions>(options =>
            //{
            //    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            //    options.CheckConsentNeeded = context => true;
            //    options.MinimumSameSitePolicy = SameSiteMode.None;
            //});
            services.AddTimedJob();
            services.AddOptions();
            services.AddXsrf();
            services.AddXss();
            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, cfg =>
            {
                cfg.LoginPath         = "/Login/Index";
                cfg.ExpireTimeSpan    = TimeSpan.FromDays(1);
                cfg.Cookie.Expiration = TimeSpan.FromDays(1);
                cfg.Cookie.Name       = CookieAuthenticationDefaults.AuthenticationScheme;
                cfg.Cookie.Path       = "/";
                cfg.Cookie.HttpOnly   = true;
                cfg.SlidingExpiration = true;
            });
            var sqlSugarConfig = SqlSugarConfig.GetConnectionString(Configuration);

            services.AddSqlSugarClient <SqlSugarClient>(config =>
            {
                config.ConnectionString      = sqlSugarConfig.Item2;
                config.DbType                = sqlSugarConfig.Item1;
                config.IsAutoCloseConnection = true;
                config.InitKeyType           = InitKeyType.Attribute;
                //config.IsShardSameThread = true;
            });
            services.AddJson(o =>
            {
                o.JsonType = JsonType.Jil;
            });
            services.AddHttpContextAccessor();
            services.AddHtmlEncoder();
            //Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            services.AddBr();                  //br压缩
            services.AddResponseCompression(); //添加压缩
            services.AddResponseCaching();     //响应式缓存
            services.AddMemoryCache();

            //@1 DependencyInjection 注册
            services.AddNlog(); //添加Nlog
            RegisterBase(services);
            ServiceExtension.RegisterAssembly(services, "Services");
            ServiceExtension.RegisterAssembly(services, "Repository");
            var bulid = services.BuildServiceProvider();

            ServiceResolve.SetServiceResolve(bulid);
        }
예제 #6
0
        //IServiceProvider This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            WCSApiAccessor.Host         = Configuration["Host:WCS"];
            MESApiAccessor.Host         = Configuration["Host:MES"];
            WMSBaseApiAccessor.WMSProxy = Configuration["Host:WMSPROXY"];

            services.AddMvc(option =>
            {
                option.Filters.Add <BaseExceptionAttribute>();
                //option.Filters.Add<FilterXSSAttribute>();
                option.Conventions.Add(new ApplicationDescription("title", Configuration["sys:title"]));
                option.Conventions.Add(new ApplicationDescription("company", Configuration["sys:company"]));
                option.Conventions.Add(new ApplicationDescription("customer", Configuration["sys:customer"]));
            }).SetCompatibilityVersion(CompatibilityVersion.Latest);
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info {
                    Title = "API", Version = "v1"
                });
            });
            //services.Configure<CookiePolicyOptions>(options =>
            //{
            //    // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            //    options.CheckConsentNeeded = context => true;
            //    options.MinimumSameSitePolicy = SameSiteMode.None;
            //});
            services.AddTimedJob();
            services.AddOptions();
            services.AddXsrf();
            services.AddXss();
            services.AddAuthentication(c =>
            {
                c.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
                c.DefaultChallengeScheme    = CookieAuthenticationDefaults.AuthenticationScheme;
            }).AddCookie(cfg =>
            {
                cfg.LoginPath  = "/Login/Index";
                cfg.LogoutPath = "/Login/Logout";
                //cfg.ExpireTimeSpan = TimeSpan.FromDays(1);
                //cfg.Cookie.Expiration = TimeSpan.FromDays(1);
                cfg.Cookie.Name     = CookieAuthenticationDefaults.AuthenticationScheme;
                cfg.Cookie.Path     = "/";
                cfg.Cookie.HttpOnly = true;
                //cfg.SlidingExpiration = true;
            });
            var sqlSugarConfig = SqlSugarConfig.GetConnectionString(Configuration);

            services.AddSqlSugarClient <SqlSugarClient>(config =>
            {
                config.ConnectionString      = sqlSugarConfig.Item2;
                config.DbType                = sqlSugarConfig.Item1;
                config.IsAutoCloseConnection = true;
                config.InitKeyType           = InitKeyType.Attribute;
                //config.IsShardSameThread = false;
            });
            services.AddJson(o =>
            {
                o.JsonType = JsonType.Jil;
            });
            services.AddSoapCore();
            services.AddDIProperty();
            services.AddHttpContextAccessor();
            services.AddHtmlEncoder();
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            services.AddBr();                  //br压缩
            services.AddResponseCompression(); //添加压缩
            services.AddResponseCaching();     //响应式缓存
            services.AddMemoryCache();
            services.AddMediatR(typeof(Startup).GetTypeInfo().Assembly);
            //@1 DependencyInjection 注册
            services.AddNlog(); //添加Nlog
            RegisterBase(services);
            ServiceExtension.RegisterAssembly(services, "Services");
            ServiceExtension.RegisterAssembly(services, "Repository");
            var bulid = services.BuildServiceProvider();

            ServiceResolve.SetServiceResolve(bulid);



            SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
            {
                DbType                = sqlSugarConfig.Item1,
                ConnectionString      = sqlSugarConfig.Item2,
                InitKeyType           = InitKeyType.Attribute,
                IsAutoCloseConnection = true,
            });

            //OutputDataBase(db);
            InitDataBase(db);
            InitSystemData(db);
            db.Close();
        }