138 lines
5.7 KiB
C#
138 lines
5.7 KiB
C#
using IP2Region.Net.Abstractions;
|
||
using IP2Region.Net.XDB;
|
||
using IRaCIS.Core.Application.BackGroundJob;
|
||
using IRaCIS.Core.Application.Helper;
|
||
using IRaCIS.Core.Application.Service;
|
||
using IRaCIS.Core.Domain.Share;
|
||
using IRaCIS.Core.Infra.EFCore;
|
||
using Microsoft.AspNetCore.Builder;
|
||
using Microsoft.AspNetCore.HttpOverrides;
|
||
using Microsoft.AspNetCore.SignalR;
|
||
using Microsoft.Extensions.Configuration;
|
||
using Microsoft.Extensions.DependencyInjection;
|
||
using Panda.DynamicWebApi;
|
||
using System;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Reflection;
|
||
|
||
namespace IRaCIS.Core.API;
|
||
|
||
|
||
public static class ServiceCollectionSetup
|
||
{
|
||
public static void ConfigureServices(this IServiceCollection services, IConfiguration _configuration)
|
||
{
|
||
services.AddOptions().Configure<SystemEmailSendConfig>(_configuration.GetSection("SystemEmailSendConfig"));
|
||
services.AddOptions().Configure<ServiceVerifyConfigOption>(_configuration.GetSection("BasicSystemConfig"));
|
||
services.AddOptions().Configure<AliyunOSSOptions>(_configuration.GetSection("AliyunOSS"));
|
||
services.AddOptions().Configure<ObjectStoreServiceOptions>(_configuration.GetSection("ObjectStoreService"));
|
||
services.AddOptions().Configure<IRCEncreptOption>(_configuration.GetSection("EncrypteResponseConfig"));
|
||
services.AddOptions().Configure<RequestDuplicationOptions>(_configuration.GetSection("RequestDuplicationOptions"));
|
||
services.AddOptions().Configure<SystemPacsConfig>(_configuration.GetSection("SystemPacsConfig"));
|
||
services.Configure<IRaCISBasicConfigOption>(_configuration.GetSection("IRaCISBasicConfig"));
|
||
|
||
services.Configure<ServiceVerifyConfigOption>(_configuration.GetSection("BasicSystemConfig"));
|
||
|
||
//ת��ͷ���� ��ȡ��ʵIP
|
||
services.Configure<ForwardedHeadersOptions>(options =>
|
||
{
|
||
options.ForwardedHeaders =
|
||
ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;
|
||
});
|
||
|
||
services.AddSingleton<IUserIdProvider, IRaCISUserIdProvider>();
|
||
services.AddSingleton<ISearcher>(new Searcher(CachePolicy.Content, Path.Combine(AppContext.BaseDirectory, StaticData.Folder.Resources, "ip2region.xdb")));
|
||
|
||
|
||
|
||
|
||
services.AddScoped(typeof(IRepository<>), typeof(Repository<>));
|
||
services.AddScoped<IRepository, Repository>();
|
||
|
||
services.AddScoped<IObtainTaskAutoCancelJob, ObtainTaskAutoCancelJob>();
|
||
|
||
// ע����Service ��β�ķ���
|
||
services.Scan(scan => scan
|
||
.FromAssemblies(typeof(BaseService).Assembly)
|
||
.AddClasses(classes => classes.Where(t => t.Name.Contains("Service")))
|
||
.AsImplementedInterfaces()
|
||
.WithScopedLifetime());
|
||
|
||
#region Register Controllers
|
||
|
||
// Register all controllers in the assembly that implement IDynamicWebApi
|
||
services.Scan(scan => scan
|
||
.FromAssemblies(typeof(BaseService).Assembly)
|
||
.AddClasses(classes => classes.AssignableTo<IDynamicWebApi>())
|
||
.AsSelf()
|
||
.WithScopedLifetime());
|
||
|
||
#endregion
|
||
|
||
|
||
// MediatR ��������Ϣ �¼����� �ӳ����� ע�������handler��Ӧ��ϵ
|
||
//builder.Services.AddMediatR(cfg => cfg.RegisterServicesFromAssemblyContaining<ConsistencyVerificationHandler>());
|
||
|
||
|
||
|
||
#region ��ʷ��������
|
||
//builder.Services.AddMemoryCache();
|
||
////�ϴ����� ����
|
||
//builder.Services.Configure<FormOptions>(options =>
|
||
//{
|
||
// options.MultipartBodyLengthLimit = int.MaxValue;
|
||
// options.ValueCountLimit = int.MaxValue;
|
||
// options.ValueLengthLimit = int.MaxValue;
|
||
//});
|
||
//IP ���� �����ð����� ���ߺ�����
|
||
//services.AddIpPolicyRateLimitSetup(_configuration);
|
||
// �û����� ������Ȩ
|
||
//services.AddAuthorizationPolicySetup(_configuration);
|
||
#endregion
|
||
}
|
||
|
||
|
||
}
|
||
|
||
#region Autofac ����
|
||
//public class AutofacModuleSetup : Autofac.Module
|
||
//{
|
||
// protected override void Load(ContainerBuilder containerBuilder)
|
||
// {
|
||
|
||
// #region byzhouhang 20210917 �˴�ע�᷺�Ͳִ� ���Լ���Domain�� ��Infra.EFcore ���� �յIJִ��ӿڶ���� �ִ��ļ�����
|
||
|
||
// containerBuilder.RegisterGeneric(typeof(Repository<>))
|
||
// .As(typeof(IRepository<>)).InstancePerLifetimeScope();//ע�᷺�Ͳִ�
|
||
|
||
// containerBuilder.RegisterType<Repository>().As<IRepository>().InstancePerLifetimeScope();
|
||
|
||
|
||
// #endregion
|
||
|
||
// #region ָ��������Ҳ��autofac ������ʵ����ȡ https://www.cnblogs.com/xwhqwer/p/15320838.html
|
||
|
||
// //��ȡ���п��������Ͳ�ʹ������ע��
|
||
// containerBuilder.RegisterAssemblyTypes(typeof(BaseService).Assembly)
|
||
// .Where(type => typeof(IDynamicWebApi).IsAssignableFrom(type))
|
||
// .PropertiesAutowired();
|
||
|
||
// #endregion
|
||
|
||
|
||
// Assembly application = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "IRaCIS.Core.Application.dll");
|
||
// containerBuilder.RegisterAssemblyTypes(application).Where(t => t.FullName.Contains("Service"))
|
||
// .PropertiesAutowired().AsImplementedInterfaces();
|
||
|
||
// //containerBuilder.RegisterType<HttpContextAccessor>().As<IHttpContextAccessor>().SingleInstance();
|
||
// //containerBuilder.RegisterType<UserInfo>().As<IUserInfo>().InstancePerLifetimeScope();
|
||
|
||
|
||
// //ע��hangfire���� ����ע��
|
||
// containerBuilder.RegisterType<ObtainTaskAutoCancelJob>().As<IObtainTaskAutoCancelJob>().InstancePerDependency();
|
||
|
||
// }
|
||
//}
|
||
#endregion
|