Startup.cs 6.0 KB

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