Startup.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using Microsoft.AspNetCore.Builder;
  2. using Microsoft.AspNetCore.Hosting;
  3. using Microsoft.Extensions.Configuration;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using Microsoft.Extensions.Hosting;
  6. using Microsoft.IdentityModel.Tokens;
  7. using Microsoft.OpenApi.Models;
  8. using Quartz;
  9. using Quartz.Impl;
  10. using Swashbuckle.AspNetCore.Filters;
  11. using System;
  12. using System.IO;
  13. using System.Text;
  14. using Microsoft.EntityFrameworkCore;
  15. using IMCS.CCS.Repository;
  16. using IMCS.CCS.Service;
  17. using IMCS.CCS.Service.Impl;
  18. using IMCS.CCS.Services;
  19. using IMCS.CCS.Filter;
  20. using IMCS.CCS.Config;
  21. using IMCS.CCS.Service.Jobs;
  22. using IMCS.CCS.Common.Redis;
  23. using System.Reflection;
  24. namespace IMCS.CCS
  25. {
  26. public class Startup
  27. {
  28. public Startup(IConfiguration configuration)
  29. {
  30. Configuration = configuration;
  31. }
  32. public IConfiguration Configuration { get; }
  33. // This method gets called by the runtime. Use this method to add services to the container.
  34. public void ConfigureServices(IServiceCollection services)
  35. {
  36. services.AddControllers(options =>
  37. {
  38. options.Filters.Add<ApiExceptionFilter>();
  39. })
  40. ;
  41. services.AddSwaggerGen(c =>
  42. {
  43. c.SwaggerDoc("v1", new OpenApiInfo { Title = "IMCS.CCS", Version = "v1" });
  44. //为 Swagger JSON and UI设置xml文档注释路径
  45. var xmlPath = Path.Combine(AppContext.BaseDirectory, "IMCS.CCS.xml");
  46. c.IncludeXmlComments(xmlPath, true);
  47. });
  48. //使用mysql
  49. services.AddDbContext<CcsContext>(options => options.UseMySQL(Configuration.GetConnectionString("mysqlContext")));
  50. services.AddCors(options =>
  51. {
  52. options.AddPolicy("HZYCors", builder =>
  53. {
  54. builder.WithOrigins("*")
  55. .AllowAnyMethod()
  56. .AllowAnyHeader();
  57. //.AllowAnyOrigin()
  58. //.AllowCredentials();
  59. //6877
  60. });
  61. });
  62. #region 实例注册
  63. //AutoMapper 配置
  64. services.AddAutoMapper(typeof(AutoMapperConfig));
  65. //services.AddAutoMapper(Assembly.GetAssembly(typeof(AutoMapperConfig)));
  66. //文件数据服务
  67. services.AddTransient<IDataService, DataService>();
  68. //项目服务
  69. services.AddTransient<IProjectService, ProjectService>();
  70. //任务服务
  71. services.AddTransient<ITaskService, TaskService>();
  72. //定时任务 服务
  73. services.AddTransient<IQuartzJobService, QuartzJobService>();
  74. //注册ISchedulerFactory的实例。
  75. services.AddTransient<ISchedulerFactory, StdSchedulerFactory>();
  76. //web api 请求服务
  77. services.AddTransient<IApiRequestService, ApiRequestService>();
  78. //Job 实例化工厂
  79. services.AddSingleton<ResultfulApiJobFactory>();
  80. //Reultful 风格 api 请求 任务
  81. services.AddTransient<ResultfulApiJob>();
  82. //任务日志
  83. services.AddSingleton<IJobLoggerService, JobLoggerService>();
  84. //项目配置信息
  85. services.AddSingleton<IDataStorageConfigurationService, DataStorageConfigurationService>();
  86. //redis 注册
  87. RepositoryRedisModule.RegisterRedisRepository(services, Configuration["RedisConnectionString"]);
  88. //services.AddScoped<IRedisService, RedisService>();
  89. services.AddTransient<IUserService, UserService>();
  90. services.AddTransient<IUserRepository, UserRepository>();
  91. services.AddScoped<IDeviceService, DeviceService>();
  92. services.AddScoped<IHttpRequestService, HttpRequestService>();
  93. services.AddScoped<IEquipmentMonitorService, EquipmentMonitorService>();
  94. services.AddScoped<ITaskCallbackService, TaskCallbackService>();
  95. services.AddScoped<IDictionaryService, DictionaryService>();
  96. services.AddScoped<ICcsActionService, CcsActionService>();
  97. services.AddScoped<ICcsTagValueService, CcsTagValueService>();
  98. services.AddScoped<ITaskJobService, TaskJobService>();
  99. services.AddScoped<IDeviceRepository, DeviceRepository>();
  100. services.AddScoped<IEquipmentMonitorRepository, EquipmentMonitorRepository>();
  101. services.AddScoped<ITaskCallbackRepository, TaskCallbackRepository>();
  102. services.AddScoped<IDictionaryRepository, DictionaryRepository>();
  103. services.AddScoped<ICcsActionRepository, CcsActionRepository>();
  104. services.AddScoped<ICcsTagValueRepository, CcsTagValueRepository>();
  105. #endregion
  106. }
  107. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  108. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  109. {
  110. if (env.IsDevelopment())
  111. {
  112. app.UseDeveloperExceptionPage();
  113. app.UseSwagger();
  114. app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "IMCS.CCS v1"));
  115. }
  116. app.UseCors("HZYCors");
  117. app.UseHttpsRedirection();
  118. app.UseStaticFiles();
  119. app.UseRouting();
  120. //app.UseAuthorization();
  121. app.UseEndpoints(endpoints =>
  122. {
  123. endpoints.MapControllers();
  124. });
  125. }
  126. }
  127. }