Startup.cs 5.4 KB

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