public IServiceProvider ConfigureServices(IServiceCollection services) { // MVC services.AddMvc( options => options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute()) ); IdentityRegistrar.Register(services); AuthConfigurer.Configure(services, _appConfiguration); services.AddScoped <IWebResourceManager, WebResourceManager>(); services.AddSignalR(); services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new Info { Title = "AbpZeroTemplate API", Description = "提供移动端或其它系统集成到自定义平台需要的api接口。", Version = "v1" }); options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "MyProject.Application.xml")); options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "MyProject.Web.Core.xml")); options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "MyProject.Web.Mvc.xml")); options.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, "MyProject.Common.xml")); // options.DocInclusionPredicate((docName, description) => true); options.TagActionsBy(api => { MethodInfo methodInfo; api.TryGetMethodInfo(out methodInfo); var attr = methodInfo.GetCustomAttributes <ApiDocumentAttribute>().FirstOrDefault() ?? methodInfo.DeclaringType.GetCustomAttributes <ApiDocumentAttribute>().FirstOrDefault(); return(new List <string> { attr.GroupName ?? api.GroupName }); }); options.OrderActionsBy((apiDesc) => $"{apiDesc.ActionDescriptor.RouteValues["controller"]}_{apiDesc.HttpMethod}"); options.DescribeAllEnumsAsStrings(); options.DocInclusionPredicate((docName, description) => { MethodInfo methodInfo; description.TryGetMethodInfo(out methodInfo); var attrs = methodInfo.GetCustomAttributes <ApiDocumentAttribute>(); if (attrs.Any()) { return(true); } else { attrs = methodInfo.DeclaringType.GetCustomAttributes <ApiDocumentAttribute>(); return(attrs.Any()); } }); options.CustomSchemaIds(x => x.FullName); options.OperationFilter <SecurityRequirementsOperationFilter>(); }); // Configure Abp and Dependency Injection return(services.AddAbp <MyProjectWebMvcModule>( // Configure Log4Net logging options => options.IocManager.IocContainer.AddFacility <LoggingFacility>( f => f.UseAbpLog4Net().WithConfig("log4net.config") ) )); }