Esempio n. 1
0
        public Bitmap Generate(LogoSettings settings)
        {
            var svg = SvgDocument.Open(settings.SvgPath);

            var logoSize  = GetLogoSize(svg, settings);
            var logoImage = RenderWholeSvgToBitmap(svg, logoSize);

            var finalLogo = new Bitmap(settings.Width, settings.Height, PixelFormat.Format32bppArgb);

            using (var gfx = Graphics.FromImage(finalLogo))
                using (var brush = new SolidBrush(settings.BackgroundColor))
                {
                    gfx.FillRectangle(brush, 0, 0, settings.Width, settings.Height);

                    var midX = (finalLogo.Width - logoImage.Width) / 2;
                    var midY = (finalLogo.Height - logoImage.Height) / 2;
                    gfx.DrawImage(logoImage, midX, midY);
                }

            if (settings.SaveOutputFile)
            {
                finalLogo.Save(settings.OutputPath, ImageFormat.Png);
            }

            return(finalLogo);
        }
Esempio n. 2
0
        public ActionResult CreateRole(RoleEditModel model)
        {
            Stream             stream    = null;
            HttpPostedFileBase roleImage = Request.Files["RoleImage"];
            Role role = roleService.Get(model.RoleName);

            if (roleImage != null && !string.IsNullOrEmpty(roleImage.FileName))
            {
                TenantLogoSettings tenantLogoSettings = TenantLogoSettings.GetRegisteredSettings(TenantTypeIds.Instance().Role());
                if (!tenantLogoSettings.ValidateFileLength(roleImage.ContentLength))
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, string.Format("文件大小不允许超过{0}", Formatter.FormatFriendlyFileSize(tenantLogoSettings.MaxLogoLength * 1024)));
                    return(View(model));
                }

                LogoSettings logoSettings = DIContainer.Resolve <ILogoSettingsManager>().Get();
                if (!logoSettings.ValidateFileExtensions(roleImage.FileName))
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "不支持的文件类型,仅支持" + logoSettings.AllowedFileExtensions);
                    return(View(model));
                }

                stream          = roleImage.InputStream;
                model.RoleImage = roleImage.FileName;
            }
            else        //当取不到上传的图片文件名时RoleImage值保持不变
            {
                model.RoleImage = role != null ? role.RoleImage : string.Empty;
            }

            if (ModelState.IsValid)
            {
                if (role != null)
                {
                    WebUtility.SetStatusCodeForError(Response);
                    EditUserRole_GenerateFormItem();
                    model.RoleName = string.Empty;

                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "角色名已存在!");

                    return(View("_CreateRole", model));
                }

                role = model.AsRole();
                roleService.Create(role, stream);
            }

            return(RedirectToAction("ManageUsers"));
        }
Esempio n. 3
0
        public ActionResult _EditIdentificationType(IdentificationTypeEditModel editModel)
        {
            string fileName = string.Empty;
            Stream stream   = null;

            //获取上传图片
            HttpPostedFileBase logo = Request.Files["IdentificationTypeLogo"];

            //如果上传图片不为空则校验其扩展名和大小
            if (logo != null && logo.ContentLength > 0)
            {
                fileName = logo.FileName;

                //校验附件的扩展名
                ILogoSettingsManager logoSettingsManager = DIContainer.Resolve <ILogoSettingsManager>();
                LogoSettings         logoSettings        = logoSettingsManager.Get();
                if (!logoSettings.ValidateFileExtensions(fileName))
                {
                    return(Content(WarpJsonMessage(new StatusMessageData(StatusMessageType.Error, "只允许上传后缀名为 " + logoSettings.AllowedFileExtensions.TrimEnd(',') + " 的文件"))));
                }

                //校验附件的大小
                TenantLogoSettings tenantLogoSettings = TenantLogoSettings.GetRegisteredSettings(TenantTypeIds.Instance().Identification());
                if (!tenantLogoSettings.ValidateFileLength(logo.ContentLength))
                {
                    return(Content(WarpJsonMessage(new StatusMessageData(StatusMessageType.Error, string.Format("文件大小不允许超过{0}KB", tenantLogoSettings.MaxLogoLength)))));
                }

                stream = logo.InputStream;
            }

            //如果IdentificationTypeId大于0则为编辑标识
            if (editModel.IdentificationTypeId > 0)
            {
                IdentificationType identificationType = editModel.AsIdentificationType();
                identificationService.UpdateIdentificationType(identificationType, stream);
            }
            //否则为创建标识
            else
            {
                if (logo == null || logo.ContentLength == 0)
                {
                    return(Content(WarpJsonMessage(new StatusMessageData(StatusMessageType.Error, "图片不能为空!"))));
                }
                IdentificationType identificationType = editModel.AsIdentificationType();
                identificationService.CreateIdentificationType(identificationType, stream);
            }
            return(Content(WarpJsonMessage(new StatusMessageData(StatusMessageType.Success, "操作成功!"))));
        }
Esempio n. 4
0
        static Size GetLogoSize(SvgDocument svg, LogoSettings settings)
        {
            var svgWidth  = svg.ViewBox.Width;
            var svgHeight = svg.ViewBox.Height;

            if (svgWidth / settings.Width > svgHeight / settings.Height)
            {
                var newWidth   = settings.Width * settings.Scale;
                var widthRatio = newWidth / svgWidth;
                var newHeight  = widthRatio * svgHeight;

                return(new Size((int)Math.Round(newWidth), (int)Math.Round(newHeight)));
            }
            else
            {
                var newHeight   = settings.Height * settings.Scale;
                var heightRatio = newHeight / svgHeight;
                var newWidth    = heightRatio * svgWidth;

                return(new Size((int)Math.Round(newWidth), (int)Math.Round(newHeight)));
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 上传Logo
        /// </summary>
        /// <param name="associateId"></param>
        /// <param name="stream"></param>
        /// <returns>上传文件的相对路径(包含文件名)</returns>
        public string UploadLogo(object associateId, Stream stream)
        {
            string relativeFileName = string.Empty;

            if (stream != null)
            {
                ILogoSettingsManager logoSettingsManager = DIContainer.Resolve <ILogoSettingsManager>();
                LogoSettings         logoSettings        = logoSettingsManager.Get();

                //检查是否需要缩放原图
                Image image = Image.FromStream(stream);
                if (image.Height > this.TenantLogoSettings.MaxHeight || image.Width > this.TenantLogoSettings.MaxWidth)
                {
                    stream = ImageProcessor.Resize(stream, this.TenantLogoSettings.MaxWidth, this.TenantLogoSettings.MaxHeight, logoSettings.ResizeMethod);
                }

                string relativePath = GetLogoRelativePath(associateId);
                string fileName     = GetLogoFileName(associateId);
                relativeFileName = relativePath + "\\" + fileName;

                StoreProvider.AddOrUpdateFile(relativePath, fileName, stream);
                stream.Dispose();

                //根据不同租户类型的设置生成不同尺寸的图片,用于图片直连访问
                if (this.TenantLogoSettings.ImageSizeTypes != null && this.TenantLogoSettings.ImageSizeTypes.Count > 0)
                {
                    foreach (var imageSizeType in this.TenantLogoSettings.ImageSizeTypes.Values)
                    {
                        string sizedFileName = StoreProvider.GetSizeImageName(fileName, imageSizeType.Key, imageSizeType.Value);
                        StoreProvider.DeleteFile(relativePath, sizedFileName);
                        IStoreFile file = StoreProvider.GetResizedImage(relativePath, fileName, imageSizeType.Key, imageSizeType.Value);
                    }
                }
            }

            return(relativeFileName);
        }
Esempio n. 6
0
        /// <summary>
        /// 获取Logo的URL
        /// </summary>
        /// <returns></returns>
        public string LogoUrl(string logoUrl, string commonTypeKey, string imageSizeTypeKey, bool enableClientCaching = true)
        {
            if (string.IsNullOrEmpty(logoUrl))
            {
                return(WebSiteUtility.ResolveUrl("~/wwwroot/images/potu.jpg"));
            }

            if (!logoUrl.ToLower().EndsWith(".gif") && !string.IsNullOrEmpty(imageSizeTypeKey) && imageSizeTypeKey != ImageSizeTypeKey.Instance().Original())
            {
                LogoSettings logoSettings = LogoSettings.GetRegisteredSettings(commonTypeKey);
                if (logoSettings != null && logoSettings.ImageSizeTypeKey != null && logoSettings.ImageSizeTypeKey.ContainsKey(imageSizeTypeKey))
                {
                    var    imageSizeType = logoSettings.ImageSizeTypeKey[imageSizeTypeKey];
                    string sizeImageName = storeProvider.GetSizeImageName(logoUrl, imageSizeType.Key, imageSizeType.Value);

                    if (enableClientCaching)
                    {
                        var filePath = storeProvider.GetDirectlyUrl(sizeImageName);
                        return(filePath);
                    }
                    else
                    {
                        return(storeProvider.GetDirectlyUrl(sizeImageName, DateTime.Now));
                    }
                }
            }

            if (enableClientCaching)
            {
                return(storeProvider.GetDirectlyUrl(logoUrl));
            }
            else
            {
                return(storeProvider.GetDirectlyUrl(logoUrl, DateTime.Now));
            }
        }
Esempio n. 7
0
        public ActionResult Create(GroupEditModel groupEditModel)
        {
            string errorMessage = null;

            if (ModelState.HasBannedWord(out errorMessage))
            {
                return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Body = errorMessage,
                    Title = "创建失败",
                    StatusMessageType = StatusMessageType.Error
                })));
            }

            System.IO.Stream   stream    = null;
            HttpPostedFileBase groupLogo = Request.Files["GroupLogo"];


            //已修改
            IUser user = UserContext.CurrentUser;

            if (user == null)
            {
                return(Json(new StatusMessageData(StatusMessageType.Error, "您尚未登录!")));
            }

            if (!new Authorizer().Group_Create(out errorMessage))
            {
                return(Redirect(SiteUrls.Instance().SystemMessage(TempData, new SystemMessageViewModel
                {
                    Body = errorMessage,
                    Title = errorMessage,
                    StatusMessageType = StatusMessageType.Error
                })));
            }
            if (groupLogo != null && !string.IsNullOrEmpty(groupLogo.FileName))
            {
                TenantLogoSettings tenantLogoSettings = TenantLogoSettings.GetRegisteredSettings(TenantTypeIds.Instance().Group());
                if (!tenantLogoSettings.ValidateFileLength(groupLogo.ContentLength))
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, string.Format("文件大小不允许超过{0}", Formatter.FormatFriendlyFileSize(tenantLogoSettings.MaxLogoLength * 1024)));
                    return(View(groupEditModel));
                }

                LogoSettings logoSettings = DIContainer.Resolve <ILogoSettingsManager>().Get();
                if (!logoSettings.ValidateFileExtensions(groupLogo.FileName))
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "不支持的文件类型,仅支持" + logoSettings.AllowedFileExtensions);
                    return(View(groupEditModel));
                }
                stream = groupLogo.InputStream;
                groupEditModel.Logo = groupLogo.FileName;
            }
            GroupEntity group = groupEditModel.AsGroupEntity();

            bool result = groupService.Create(user.UserId, group);

            if (stream != null)
            {
                groupService.UploadLogo(group.GroupId, stream);
            }
            //设置分类
            if (groupEditModel.CategoryId > 0)
            {
                categoryService.AddItemsToCategory(new List <long>()
                {
                    group.GroupId
                }, groupEditModel.CategoryId, 0);
            }
            //设置标签
            string relatedTags = Request.Form.Get <string>("RelatedTags");

            if (!string.IsNullOrEmpty(relatedTags))
            {
                tagService.AddTagsToItem(relatedTags, group.GroupId, group.GroupId);
            }
            //发送邀请
            if (!string.IsNullOrEmpty(groupEditModel.RelatedUserIds))
            {
                //已修改
                IEnumerable <long> userIds = Request.Form.Gets <long>("RelatedUserIds", null);
                groupService.SendInvitations(group, user, string.Empty, userIds);
            }
            return(Redirect(SiteUrls.Instance().GroupHome(group.GroupKey)));
        }
Esempio n. 8
0
        public ActionResult EditSection(BarSectionEditModel model)
        {
            HttpPostedFileBase logoImage         = Request.Files["LogoImage"];
            string             logoImageFileName = string.Empty;
            Stream             stream            = null;

            if (logoImage != null && !string.IsNullOrEmpty(logoImage.FileName))
            {
                TenantLogoSettings tenantLogoSettings = TenantLogoSettings.GetRegisteredSettings(TenantTypeIds.Instance().BarSection());
                if (!tenantLogoSettings.ValidateFileLength(logoImage.ContentLength))
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, string.Format("Logo文件大小不允许超过{0}", Formatter.FormatFriendlyFileSize(tenantLogoSettings.MaxLogoLength * 1024)));
                    return(View(model));
                }

                LogoSettings logoSettings = DIContainer.Resolve <ISettingsManager <LogoSettings> >().Get();
                if (!logoSettings.ValidateFileExtensions(logoImage.FileName))
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "Logo文件是不支持的文件类型,仅支持" + logoSettings.AllowedFileExtensions);
                    return(View(model));
                }
                stream            = logoImage.InputStream;
                logoImageFileName = logoImage.FileName;
            }


            IEnumerable <long> managerUserIds = Request.Form.Gets <long>("ManagerUserIds");

            if (model.SectionId == 0)
            {
                BarSection section = model.AsBarSection();

                //long userId = Request.QueryString.Gets<long>(model.UserId, new List<long>()).FirstOrDefault();


                section.UserId = Request.Form.Gets <long>("UserId", new List <long>()).FirstOrDefault();
                if (section.UserId == 0)
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "请输入吧主信息");
                    return(View(model));
                }
                section.LogoImage    = logoImageFileName;
                section.DisplayOrder = model.DisplayOrder ?? 100;
                if (managerUserIds != null && managerUserIds.Count() > 0)
                {
                    managerUserIds = managerUserIds.Where(n => n != section.UserId);
                }

                bool isCreated = barSectionService.Create(section, UserContext.CurrentUser.UserId, managerUserIds, stream);

                categoryService.AddItemsToCategory(new List <long> {
                    section.SectionId
                }, model.CategoryId);

                if (isCreated)
                {
                    TempData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Success, "创建成功");
                    return(Redirect(SiteUrls.Instance().EditSection(section.SectionId)));
                }
                ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "创建失败");
                return(View(model));
            }
            else
            {
                BarSection section = model.AsBarSection();



                long userId = Request.Form.Gets <long>("UserId", new List <long>()).FirstOrDefault();
                if (userId == 0)
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "必须输入吧主信息");
                    ViewData["ManagerUserIds"]    = barSectionService.GetSectionManagers(section.SectionId).Select(n => n.UserId);
                    ISettingsManager <BarSettings> manager = DIContainer.Resolve <ISettingsManager <BarSettings> >();
                    BarSettings settings = manager.Get();
                    ViewData["SectionManagerMaxCount"] = settings.SectionManagerMaxCount;
                    return(View(model));
                }
                section.UserId = userId;
                if (!string.IsNullOrEmpty(logoImageFileName))
                {
                    section.LogoImage = logoImageFileName;
                }
                section.DisplayOrder = model.DisplayOrder ?? 100;
                barSectionService.Update(section, UserContext.CurrentUser.UserId, managerUserIds, stream);
                categoryService.ClearCategoriesFromItem(section.SectionId, 0, TenantTypeIds.Instance().BarSection());
                categoryService.AddItemsToCategory(new List <long> {
                    section.SectionId
                }, model.CategoryId);

                TempData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Success, "更新成功");
                return(Redirect(SiteUrls.Instance().EditSection(model.SectionId)));
            }
        }
Esempio n. 9
0
        public ActionResult EditGroup(string spaceKey, GroupEditModel groupEditModel)
        {
            IUser currentUser = UserContext.CurrentUser;

            if (currentUser == null)
            {
                return(Json(new StatusMessageData(StatusMessageType.Error, "您尚未登录!")));
            }
            System.IO.Stream   stream    = null;
            HttpPostedFileBase groupLogo = Request.Files["GroupLogo"];

            if (groupLogo != null && !string.IsNullOrEmpty(groupLogo.FileName))
            {
                TenantLogoSettings tenantLogoSettings = TenantLogoSettings.GetRegisteredSettings(TenantTypeIds.Instance().Group());
                if (!tenantLogoSettings.ValidateFileLength(groupLogo.ContentLength))
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, string.Format("文件大小不允许超过{0}", Formatter.FormatFriendlyFileSize(tenantLogoSettings.MaxLogoLength * 1024)));
                    return(View(groupEditModel));
                }

                LogoSettings logoSettings = DIContainer.Resolve <ILogoSettingsManager>().Get();
                if (!logoSettings.ValidateFileExtensions(groupLogo.FileName))
                {
                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "不支持的文件类型,仅支持" + logoSettings.AllowedFileExtensions);
                    return(View(groupEditModel));
                }
                stream = groupLogo.InputStream;
                groupEditModel.Logo = groupLogo.FileName;
            }

            GroupEntity group = groupEditModel.AsGroupEntity();


            //设置分类
            if (groupEditModel.CategoryId > 0)
            {
                categoryService.ClearCategoriesFromItem(group.GroupId, 0, TenantTypeIds.Instance().Group());
                categoryService.AddItemsToCategory(new List <long>()
                {
                    group.GroupId
                }, groupEditModel.CategoryId, 0);
            }


            //已修改
            //设置标签
            string relatedTags = Request.Form.Get <string>("RelatedTags");

            if (!string.IsNullOrEmpty(relatedTags))
            {
                tagService.ClearTagsFromItem(group.GroupId, group.GroupId);
                tagService.AddTagsToItem(relatedTags, group.GroupId, group.GroupId);
            }
            if (stream != null)
            {
                groupService.UploadLogo(group.GroupId, stream);
            }

            groupService.Update(currentUser.UserId, group);
            TempData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Success, "更新成功!");
            return(Redirect(SiteUrls.Instance().EditGroup(group.GroupKey)));
        }
        public ActionResult EditTopic(TagEditModel tagEditModel)
        {
            System.IO.Stream stream = null;

            //是否创建
            bool isCreate = tagEditModel.TagId == 0;

            if (isCreate)
            {
                ViewData["editTopicTitle"] = "创建话题";
            }
            else
            {
                ViewData["editTopicTitle"] = "编辑话题";
            }

            TagService         tagService = new TagService(tagEditModel.TenantTypeId);
            IEnumerable <long> userIds    = Request.Form.Gets <long>("RelatedObjectIds");

            //是特色标签
            if (tagEditModel.IsFeatured)
            {
                HttpPostedFileBase tagLogo  = Request.Files["tagLogo"];
                string             fileName = tagLogo == null ? "" : tagLogo.FileName;
                if (string.IsNullOrEmpty(fileName) && string.IsNullOrEmpty(tagEditModel.FeaturedImage))
                {
                    //标签分组下拉框
                    SelectList topicGroups = GetTagGroupSelectList(tagEditModel.TopicGroupId, tagEditModel.TenantTypeId);
                    ViewData["topicGroups"] = topicGroups;

                    //取到用户设置的相关标签
                    ViewData["seletedUserIds"] = userIds;

                    ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "图片不能为空");

                    return(View(tagEditModel));
                }
                else if (!string.IsNullOrEmpty(fileName))
                {
                    //校验附件的扩展名
                    LogoSettings logoSettings = DIContainer.Resolve <ISettingsManager <LogoSettings> >().Get();
                    if (!logoSettings.ValidateFileExtensions(fileName))
                    {
                        //标签分组下拉框
                        SelectList topicGroups = GetTagGroupSelectList(tagEditModel.TopicGroupId, tagEditModel.TenantTypeId);
                        ViewData["topicGroups"] = topicGroups;

                        //取到用户设置的相关标签
                        ViewData["seletedUserIds"] = userIds;

                        ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, "只允许上传后缀名为 .gif .jpg .jpeg .png 的文件");

                        return(View(tagEditModel));
                    }

                    //校验附件的大小
                    TenantLogoSettings tenantLogoSettings = TenantLogoSettings.GetRegisteredSettings(TenantTypeIds.Instance().Tag());
                    if (!tenantLogoSettings.ValidateFileLength(tagLogo.ContentLength))
                    {
                        //标签分组下拉框
                        SelectList topicGroups = GetTagGroupSelectList(tagEditModel.TopicGroupId, tagEditModel.TenantTypeId);
                        ViewData["topicGroups"] = topicGroups;

                        //取到用户设置的相关标签
                        ViewData["seletedUserIds"] = userIds;

                        ViewData["StatusMessageData"] = new StatusMessageData(StatusMessageType.Error, string.Format("文件大小不允许超过{0}KB", tenantLogoSettings.MaxLogoLength));

                        return(View(tagEditModel));
                    }

                    stream = tagLogo.InputStream;
                    tagEditModel.FeaturedImage = fileName;
                }
            }

            //获取相关微博
            IEnumerable <long> seletedUserIds = userIds;

            //创建
            if (isCreate)
            {
                Tag tag = tagEditModel.AsTag();
                tagService.Create(tag, stream);

                //添加到分组
                if (tagEditModel.TopicGroupId > 0)
                {
                    tagService.BatchAddGroupsToTag(new List <long>()
                    {
                        tagEditModel.TopicGroupId
                    }, tagEditModel.TagName);
                }
            }//更新
            else
            {
                Tag tag = tagEditModel.AsTag();
                tagService.Update(tag, stream);

                //添加到分组
                if (tagEditModel.TopicGroupId > 0)
                {
                    tagService.BatchAddGroupsToTag(new List <long>()
                    {
                        tagEditModel.TopicGroupId
                    }, tagEditModel.TagName);
                }
            }

            return(RedirectToAction("ManageMicroblogTopics"));
        }
Esempio n. 11
0
 public void Save(LogoSettings logoSettings)
 {
     repository.Save(logoSettings);
 }
Esempio n. 12
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            GlobalHostingEnvironment.HostingEnvironment = this.HostingEnvironment;
            services.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            // Add framework services.
            services.Replace(ServiceDescriptor.Transient <IControllerActivator, ServiceBasedControllerActivator>());
            services.AddAuthorization(authorization =>
            {
                authorization.AddPolicy("EnterSystem", policy => policy.Requirements.Add(new EnterSystemRequirement()));
            });
            services.AddSession(session =>
            {
                session.IdleTimeout = TimeSpan.FromMinutes(30);
            });
            services.AddTimedJob();
            services.AddMvc(option =>
            {
                option.Filters.Add(new HandleErrorToLogAttribute());
            }).AddJsonOptions(option => {
                option.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm";
            });

            var assembly = this.GetType().GetTypeInfo().Assembly;
            var builder  = new ContainerBuilder();
            var manager  = new ApplicationPartManager();
            var feature  = new ControllerFeature();

            manager.ApplicationParts.Add(new AssemblyPart(assembly));
            manager.FeatureProviders.Add(new ControllerFeatureProvider());
            manager.PopulateFeature(feature);

            builder.RegisterTypes(feature.Controllers.Select(controller => controller.AsType()).ToArray()).PropertiesAutowired();
            builder.Register(c => new DbService(Configuration.GetSection("ConnectionStrings")["DefaultConnection"])).AsSelf().PropertiesAutowired();

            string[] assembliesName = { "SexyColor.BusinessComponents", "SexyColor.CommonComponents" };
            var      assemblies     = assembliesName.Select(w => Assembly.Load(new AssemblyName(w))).ToArray();


            //仓储批量注册
            builder.RegisterAssemblyTypes(assemblies).Where(t => t.Name.EndsWith("Repository")).AsSelf().AsImplementedInterfaces().SingleInstance().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);

            //服务批量注册
            builder.RegisterAssemblyTypes(assemblies).Where(t => t.Name.EndsWith("Service")).AsSelf().AsImplementedInterfaces().SingleInstance().PropertiesAutowired(PropertyWiringOptions.AllowCircularDependencies);

            //业务组件注册
            builder.Register(c => new AuthorizerHelper()).AsSelf().SingleInstance().PropertiesAutowired();
            builder.Register(c => new DefaultIdGenerator()).As <IdGenerator>().SingleInstance();
            builder.Register(c => new DefaultUserIdToUserNameDictionary()).As <UserIdToUserNameDictionary>().SingleInstance().PropertiesAutowired();
            builder.Register(c => new DefaultCaptchaManager()).As <ICaptchaManager>().SingleInstance();
            //builder.Register(c => new DefaultCacheService(new RedisMemoryCache(), new RuntimeMemoryCache(), 1.0F, true)).As<ICacheService>().SingleInstance();
            builder.Register(c => new DefaultCacheService(new RuntimeMemoryCache(), 1.0F)).As <ICacheService>().SingleInstance();
            builder.Register(c => new DefaultStorageService()).As <IStorageService>().SingleInstance();
            builder.Register(c => new DefaultStoreProvider(@"~/images")).As <IStoreProvider>().SingleInstance();
            builder.Register(c => new Logger(this.HostingEnvironment)).As <SexyColor.CommonComponents.ILogger>().SingleInstance();
            builder.Register(c => new Log4NetLoggerFactoryAdapter(repository.Name)).As <ILoggerFactoryAdapter>().SingleInstance();
            builder.Register(c => new QuartzTaskScheduler()).As <ITaskScheduler>().SingleInstance();
            //泛型注册
            builder.RegisterGeneric(typeof(Repository <>)).As(typeof(IRepository <>)).SingleInstance().PropertiesAutowired();

            builder.Populate(services);
            this.ApplicationContainer = builder.Build();
            BuilderContext.Register(services, Configuration);

            LogoSettings.RegisterSettings(LogoConfigManager.Instance().GetAllLogoConfigs());
            new DefaultResourceManager().Excute();
            ReadConfigurationHelper.Configuration = Configuration;
            DIContainer.RegisterContainer(this.ApplicationContainer);
            return(new AutofacServiceProvider(this.ApplicationContainer));
        }